#include #include typedef struct ListNode { int data; struct ListNode *next; } ListNode; //typedef ListNode *LinkList; //LinkList head; //ListNode *p; ListNode *initLink() { ListNode *p = NULL;//创建头指针 ListNode *temp = (ListNode *) malloc(sizeof(ListNode));//创建首元节点 //首元节点先初始化 temp->data = 1; temp->next = NULL; p = temp;//头指针指向首元节点 //从第二个节点开始创建 for (int i = 2; i < 5; i++) { //创建一个新节点并初始化 ListNode *a = (ListNode *) malloc(sizeof(ListNode)); a->data = i; a->next = NULL; //将temp节点与新建立的a节点建立逻辑关系 temp->next = a; //指针temp每次都指向新链表的最后一个节点,其实就是 a节点,这里写temp=a也对 temp = temp->next; } //返回建立的节点,只返回头指针 p即可,通过头指针即可找到整个链表 return p; } void display(ListNode *p) { ListNode *temp = p;//将temp指针重新指向头结点 //只要temp指针指向的结点的next不是Null,就执行输出语句。 while (temp) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); } ListNode *init() { ListNode *p = NULL; ListNode *temp = (ListNode *) malloc(sizeof(ListNode)); temp->data = 0; temp->next = NULL; p = temp; for (int i = 1; i <= 5; i++) { ListNode *a = (ListNode *) malloc(sizeof(ListNode)); a->data = i; a->next = NULL; temp->next = a; temp = a; } return p; } ListNode *createList() { //头插法 ListNode *p = NULL; for (int i = 1; i <= 5; i++) { ListNode *a = (ListNode *) malloc(sizeof(ListNode)); a->data = i; a->next = p; p = a; } return p; } ListNode *GetNodei(ListNode *head, int i) { ListNode *p = head; int j = 1; while (p != NULL && j < i) { p = p->next; ++j; } if (j == i) { p->next = NULL; return p; } else { return NULL; } } ListNode *insertLinkList(ListNode *head, int i, int element) { ListNode *p = head, *s; int j = 0; while (p != NULL && j < i) { p = p->next; ++j; } if (p == NULL) { printf("error\n"); return NULL; } else { s = (ListNode *) malloc(sizeof(ListNode)); s->data = element; s->next = p->next; p->next = s; } return head; }