您的位置:首页 > 其它

链表逆序 头插法

2014-03-18 12:42 351 查看
#include <stdio.h>
#include <stdlib.h>

typedef struct Node{
int content;
struct Node* next;
}LNode;

init(LNode** head){
*head = (LNode*)malloc(sizeof(LNode));
(*head)->content = 0;
(*head)->next = NULL;
}

insert(LNode* head, int num){
LNode* newNode = (LNode*)malloc(sizeof(LNode));
newNode->content = num;
newNode->next = head->next;
head->next = newNode;
}

printL(LNode* head){
head = head->next;
while (head != NULL){
printf("%d ", head->content);
head = head->next;
}
}

zhuanZhi(LNode* head){
LNode* p = head->next;
LNode* q = p->next;//获得第二个
p->next = NULL;//初始化第一个
while (q != NULL){
head->next = q;//先插进去
head->next->next = p;//逆序
p = head->next;//迭代p
q = q->next;//迭代q
}
}

main(){
LNode* head;
init(&head);

insert(head, 1);
insert(head, 2);
insert(head, 3);
insert(head, 4);
insert(head, 5);
insert(head, 6);
insert(head, 7);
insert(head, 8);
insert(head, 9);

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