按照书上的想法自己写了一个循环链表。每出现一个新的节点,就将这个节点的next链接到头指针。
虽然感觉有一些东西还是不太正确,但现在也找不出来,就先这样吧。
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct node{
int data;
struct node *next;
} Node;
Node* Creatlinklist(int n)
{
Node *head=(Node*)malloc(sizeof(Node));
Node *p=head;
for(int i=n;i>0;i--){
p->next=(Node*)malloc(sizeof(Node));
p=p->next;
p->next=head;//形成循环
cout<<i<<" ";
}
cout<<endl<<"Creat linklist has been down."<<endl;
return head;
}
void Inputdata_linklist(Node *head,int n)
{
Node *p=head->next;
for(int i=0;i<n;i++){
cin>>p->data;
//cout<<p->data<<" ";
p=p->next;
}
cout<<endl<<"Input has been down."<<endl;
}
void print(Node *head)
{
Node *p=head->next;
for(int i=0;i<3;i++){
while(p!=head)
{
cout<<" "<<p->data;
p=p->next;
}
cout<<endl;
p=p->next;
}
}
int main()
{
int n;
cin>>n;
Node *head=Creatlinklist(n);
Inputdata_linklist(head,n);
print(head);
return 0;
}