全文核心思想,设置变量地址ptail, p, q。方便对链表操作
#define _CRT_SECURE_NO_WARNINGS #include#include typedef struct node{ int data; struct node *next; }linklist; creatlist(); traversal(); change(); insert_node(); delete_node(); int main(){ linklist *head; //创建链表 head = creatlist(); traversal(head); //修改节点 change(head); traversal(head); //插入节点 insert_node(head); traversal(head); //删除节点 delete_node(head); traversal(head); } creatlist(){ linklist *head = (linklist*)malloc(sizeof(linklist)); // int *head; if (head == NULL){ printf("创建头节点失败n"); exit(-1); } linklist *tail = head; tail->next = NULL; int n; printf("请输入创建链表长度:n"); scanf("%d", &n); printf("请输入链表数据data:n"); for (int i = 0; i < n; ++i){ linklist *list = (linklist*)malloc(sizeof(linklist)); if (list == NULL){ printf("创建链表失败n"); exit(-1); } printf("list_[%d]->data:n", i+1); scanf("%d", &list->data); list->next = NULL; tail->next = list; tail = list; } return head; } traversal(head){ linklist *p = head; p = p->next; while (p != NULL){ printf("%dn", p->data); p = p->next; } } change(head){ linklist *tail = head; int n; int t = 0; printf("请输入要修改第几个节点:n"); scanf("%d", &n); while (t < n && tail != NULL){ tail = tail->next; t+=1; } printf("该节点修改值data为:n"); scanf("%d", &tail->data); } insert_node(head){ linklist *tail = head; int n; int t = 0; printf("请输入要插入第几个节点之后:n"); scanf("%d", &n); while (t < n && tail != NULL){ tail = tail->next; t += 1; } linklist *new = (linklist*)malloc(sizeof(linklist)); printf("该节点插入值data为:n"); scanf("%d", &new->data); new->next = tail->next; tail->next = new; } delete_node(head){ linklist *tail = head; linklist *p = head; tail = tail->next; int n; int t = 1; printf("请输入要删除第几个节点:n"); scanf("%d", &n); while (t < n && tail != NULL){ tail = tail->next; p = p->next; t += 1; } p->next = tail->next; }
创建链表图解
(郝兵老师代码)



