您的位置:首页 > 其它

单链表逆序操作-倒插法

2016-11-04 21:02 246 查看


首先我们把链表分成两部分,头结点,其他结点;让头结点的next为NULL;然后剩余部分使用倒插法,一个一个的插入的到头结点中;

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef struct LNode{
int data;
struct LNode *next;
}Node,*LinkList;

int creatLinkList(LinkList &L,int n){
LinkList head,temp;
L = (LinkList)malloc(sizeof(Node));
if(!L){
printf("malloc atcion error");
return 0;
}
L->next=NULL;
head = L;
int j=0;
for(;j<n;j++){
temp = (LinkList)malloc(sizeof(Node));
if(!temp){
printf("malloc atcion error");
return 0;
}
scanf("%d",&temp->data);
temp->next = head->next;
head->next = temp;
head = temp;
}
return 1;
}
int printfLinkList(LinkList L){
LinkList head;
head = L;
head = head->next;
while(head!=NULL){
printf("%d ",head->data);
head = head->next;
}
return 1;
}
//进行链表的倒序
int revserLinkList(LinkList L){
LinkList pMove,temp;
pMove = L->next;//1
L->next = NULL;//2
while(pMove!=NULL){
temp = pMove->next;//3
pMove->next=L->next;//4
L->next = pMove;//5
pMove = temp;//6
}

return 1;
}
int main(){
LinkList L;
int length;
printf("please input the linkList length\n");
scanf("%d",&length);
creatLinkList(L,length);
printf("reverse the linkList\n");
revserLinkList(L);
printfLinkList(L);

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