链表的创建
链表可以用c语言描述,也可以用c++语言描述。考虑到初学者的困难。特意用c语言。
下面展示一下链表创建:
顺插法:
#include <stdio.h> #include <malloc.h> struct tagNode { int data; tagNode* next; }; typedef tagNode Node; typedef tagNode* Link; //创建链表 Link create_List(Link head) { int data; Link p,tmp; head = (Link)malloc(sizeof(Node)); if(!head) { printf("内存分配失败!"); return NULL; } head->data = 0; head->next = NULL; printf("请输入数据\n"); scanf("%d",&data); p = head; while(data != 0) { tmp = (Link)malloc(sizeof(Node)); tmp->data = data; tmp->next = p; p = tmp; printf("请输入数据\n"); scanf("%d",&data); } return head; }
下面讲讲单链表的逆转:
Link NiZhuan(Link head) { Link pBack,pPointer,pNext; pBack = head; pPointer = pBack->next; pBack->next = NULL; pNext = pPointer->next; pPointer->next = pBack; pBack = pPointer; pPointer = pNext; while(pPointer->pNext != NULL) { pNext = pPointer->next; pPointer->next = pBack; pBack = pPointer; pPointer = pNext; } pPointer->next = pBack; head = pPointer; return head; }