/****************************************
Funtion: Reverse Linklist
Date: 2017-03-22
*****************************************/
#include<bits/stdc++.h>
#define maxn 100001
int a[maxn];
using namespace std;
typedef int DataType; //定义数据类型便于宏修改
typedef struct node{
DataType data; //定义数据类型便于宏修改
struct node* next;
}Linknode,*LinkList;
//创建链表
LinkList CreateList(DataType a[],int n){
Linknode* ListHead=new Linknode();
ListHead->data=a[0];
ListHead->next=NULL;
for(int i=n-1;i>=1;i--){
Linknode* p=new Linknode();
p->data=a[i];
p->next=ListHead->next;
ListHead->next=p;
}
return ListHead;
}
//输出链表
void PrintList(LinkList ListHead){
if(NULL==ListHead)
cout<<"empty list"<<endl;
else{
Linknode* p=ListHead;
while(p!=NULL){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}
//链表逆置
void ReverseList(Linknode* pcur,LinkList& ListHead){
if(NULL==pcur||(NULL==pcur->next)){
ListHead=pcur;
}
else{
Linknode* pnext=pcur->next;
ReverseList(pnext,ListHead);
pnext->next=pcur;
pcur->next=NULL;
}
}
int main(){
while(1){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
Linknode* list=CreateList(a,n);
cout<<"Initial LinkList:"<<endl;
PrintList(list);
Linknode* ptemp=list;
ReverseList(ptemp,list);
cout<<"After Reverse:"<<endl;
PrintList(list);
}
return 0;
}
单链表逆置
最新推荐文章于 2023-11-29 11:12:16 发布