链表创建 和 倒置

前端之家收集整理的这篇文章主要介绍了链表创建 和 倒置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#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) }

猜你在找的设计模式相关文章