2.9 试编写算法,求循环链表中结点的个数
#include<iostream>
using namespace std;
struct LinkList
{
LinkList *next;
int val;
};
void Count(LinkList *L){
LinkList *t=L;//记录头结点
L=L->next;
int s=0;
while(L->next!=t->next){//从第一个结点开始遍历,当最后一个结点和头结点指向的第一个结点是同一结点,则代表循环链表中的结点个数
cout<<L->val<<" ";
L=L->next;
s++;
}
cout<<endl;
cout<<s;
}
int main()
{
LinkList *L=new LinkList;
LinkList *r=L;
for(int i=0;i<8;i++){//尾插法
LinkList *p=new LinkList;
p->val=i+1; r->next=p; r=p;
}
r->next=L;//使最后一个结点指向头结点,构成一个循环链表
Count(L);
return 0;
}