#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1e5+5;
typedef struct Node{
int val;
Node *next;
} *LinkList;
void print(LinkList l) {//打印链表
LinkList p = l->next;
while(p){
cout<<(p->val)<<" ";
p = p->next;
}
cout<<endl;
}
int main(){
int n,t;
cin>>n;
LinkList l,p,q,pr,te;
l = (LinkList)malloc(sizeof(Node));
l->next = NULL;
for(int i = 0;i < n;i++){//头插法建立链表
cin>>t;
p = (LinkList)malloc(sizeof(Node));
p->val = t;
p->next = l->next;
l->next = p;
}
cout<<"插入后"<<endl;
print(l);
p = l->next;//第一个节点
q = NULL;
l->next = NULL;//把头结点空出来
while(p != NULL){//从前往后更新
pr = p->next;//保存当前节点的后继
p->next = q;//更新当前节点的后继
q = p;//保存当前节点
p = pr;//指针后移,即更新当前节点
}
l->next = q;//连接头结点
cout<<"反转后"<<endl;
print(l);
return 0;
}
单链表的创建于反转
猜你喜欢
转载自blog.csdn.net/JingleLiA/article/details/81286390
今日推荐
周排行