节点用指针,新建节点时要用new。
注意判断边界,即空表/单节点/两节点.
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct node
{
node * next;
int value;
};
node* rever(node * head)//反转
{
node * now=head;
if(head==NULL)return NULL; //判断空链表的情况
node * pre=NULL;
node * nxt=NULL;
while(now!=NULL) //记录三个节点
{
nxt=now->next;
now->next=pre;
pre=now;
now=nxt;
}
return pre;
}
int main()
{
node* head=new node(); //创建表头
head->value=10;
node* now=head;
for(int i=0;i<0;i++){
int temp;
cin>>temp;
node* b=new node();
b->value=temp;
now->next=b;
now=b;
}
now->next=NULL;
now=head;
while(now!=NULL){
cout<<now->value<<" ";
node* temp=now;
now=now->next;
}
cout<<endl;
node* head2=rever(head);
now=head2;
while(now!=NULL){
cout<<now->value<<" ";
node* temp=now;
now=now->next;
delete temp;
}
cout<<endl;
return 0;
}