本身不难,主要应该关注边界的处理
1.如果只有一个节点
2.尾节点的处理
3.输入的为空指针
实现如下:
#include <iostream>
using namespace std;
class node
{
public:
int value;
node * next;
};
int main()
{
int length,i=1;
int temp;
cin>>length;
node *head=new node();
cout<<"输入第"<<i<<"个节点";
cin>>temp;
head->value=temp;
node *p=head;
length--;
while(length)
{
p->next=new node();
cout<<"输入第"<<++i<<"个节点";
cin>>temp;
p->next->value=temp;
p=p->next;
length--;
}
p->next=NULL;
p=head;
i=1;
while(p!=NULL)
{
cout<<"第"<<i++<<"个节点为"<<p->value<<endl;
p=p->next;
}
node *r,*q;
p=head;
q=p->next;
if(q!=NULL) //处理只有一个节点的情况
{
r=q->next;
p->next=NULL;
while(r!=NULL)
{
q->next=p;
p=q;
q=r;
r=q->next;
}
q->next=p; //处理尾节点,否则没有与之前的链表连接起来
head=q;
}
p=head;
i=1;
while(p!=NULL)
{
cout<<"第"<<i++<<"个节点为"<<p->value<<endl;
p=p->next;
}
}