您的位置:首页 > 其它

链表创建 和 倒置

2012-07-24 11:07 225 查看
#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)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: