/*
时间: 2020年10月22日16:44:37
目的:了解循环单链表
功能:熟悉循环单链表的各项操作
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int val;
struct node *next;
}SD,*PSD;
PSD CreatCirList();//循环单链表的创建函数
void Traverse(PSD);//输出函数
int main()
{
PSD pLast1;
pLast1=CreatCirList();
Traverse(pLast1);
}
PSD CreatCirList(){
PSD pLast=(PSD)malloc(sizeof(SD));
pLast->next=pLast;//使尾指针指向的节点的指针域指向自身
PSD p=pLast;
int val,len,i;
printf("请输入循环单链表的元素个数:");
scanf("%d",&len);
for(i=0;i<len;i++){
PSD q=(PSD)malloc(sizeof(SD));
printf("输入第%d个元素的值:",i+1);
scanf("%d",&val);
q->val=val;
q->next=p->next;
p->next=q;
if(p==pLast)
pLast=q;
p=q;
}
return pLast;
}
void Traverse(PSD pLast){
PSD p=pLast->next->next;
while(p!=pLast->next){
printf("%5d",p->val);
p=p->next;
}
printf("\n");
}
11-25
2364
09-17
2864
03-21
4182
06-30
3522
11-22
1060
09-03
793