#include
#include typedef struct Node {int val;struct Node* next;
}M;M* listCreat();
void listOut();
M* listAdd();
M* listDel();
void listSear();
M* listAdj();int main() {printf("%s\n", "链表长度:");int Len;scanf_s("%d",&Len);M* List = listCreat(Len);printf("\n%s\n", "打印List:");listOut(List);printf("\n%s\n", "插入位置:");int Index;scanf_s("%d", &Index);List=listAdd(List,Index);printf("\n%s\n", "打印List:");listOut(List);printf("\n%s\n", "删除位置:");int Del;scanf_s("%d", &Del);List=listDel(List,Del);printf("\n%s\n", "打印List:");listOut(List);printf("\n%s\n", "查找位置:");int Search;scanf_s("%d", &Search);listSear(List,Search);printf("\n%s\n", "打印List:");listOut(List);printf("\n%s\n", "更改位置:");int Adjust,val;scanf_s("%d", &Adjust);printf("\n%s\n", "val:");scanf_s("%d", &val);List = listAdj(List, Adjust, val);printf("\n%s\n", "打印List:");listOut(List);return 0;
}M* listCreat(int step) {M* head = NULL, * last = NULL, * p = NULL;int steps = 0;do {M* p = (M*)malloc(sizeof(M));p->next = NULL;printf("输入val:");scanf_s("%d", &(p->val));if (!head) {head = p;}else {last->next = p;}last = p;steps++;} while (steps < step);return head;
}void listOut(M* head) {while (head != NULL) {printf("val:%d\n", head->val);head = head->next;}
}M* listAdd(M* head, int Index) {M* p = (M*)malloc(sizeof(M));p->next = NULL;printf("输入val:");scanf_s("%d", &(p->val));if (Index == 0) {p->next = head;head = p;}else {M* In = head;while (Index - 1 > 0) {Index--;In = In->next;}p->next = In->next;In->next = p;}return head;
}M* listDel(M* head, int Index) {if (Index == 0) {head = head->next;}else {M* In = head;while (Index - 1 > 0) {Index--;In = In->next;}In->next = In->next->next;}return head;
}void listSear(M* head, int Index) {M* p = head;while (Index > 0) {Index--;p = p->next;}printf("val:%d\n", p->val);
}M* listAdj(M* head, int Index, int data) {M* p = head;while (Index > 0) {Index--;p = p->next;}p->val = data;return head;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!