链表创建 和 倒置
发布时间:2020-12-13 20:03:05 所属栏目:百科 来源:网络整理
导读:#define MAX_ITEM 10 typedef struct node *link; struct node{ int data; link next; }; link Create(); void Destory(link head); void Print(link head); link Revert(link head); Node Create() { link x = NULL; link head = (link) malloc(sizeof(struc
#define MAX_ITEM 10
typedef struct node *link; struct node{ int data; link next; }; link Create(); void Destory(link head); void Print(link head); link Revert(link head); Node Create() { link x = NULL; link head = (link) malloc(sizeof(struct node)); x = head; for (int i = 0; i < MAX_ITEM ; i++) { link newNode = (link)malloc(sizeof(struct node)); newNode->data = i; newNode->next = NULL; x->next = newNode; x = x->next; } return head; } void Destory(link *head) { link node = head; while(node!= NULL) {link tmpNode = node->next; free(node); node= tmpNode; } } void Print(link *head) { if (head == NULL) return; while(head) { printf("%d",head->data); head = head->next; } } link Revert(link head) { link preNode,curNode,nextNode; if (head == NULL) //空链表 return NULL; if (head->next == NULL) //仅一个元素 return head; preNode = NULL;//初始化 curNode = head; while(curNode) { nextNode = curNode->next;//先记录下一个结点 curNode->next = preNode;//改变链表方向(逆置) preNode = curNode;//将当前结点作为下一次循环的前一个结点 curNode = nextNode;//向后推移一个结点 } return preNode;//当遍历完链表后curNode应该为空,此时preNode就是逆置后链表头(head) }(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |