#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}NODE;//链表节点结构体
NODE * create(int x);//声明创建节点的函数
void display(NODE *head, int x);//声明显示节点的函数
int main()
{
int x;
NODE *p;
printf("请输入循环链表节点数量:");
scanf("%d",&x);
p = create(x);
printf("请输入输入多少个元素后终止输出:");
scanf("%d",&x);
display(p,x);
return 0
}
NODE * create(int x)
{
int i;
NODE *current;//当前节点指针
NODE *pre;//上一个节点的指针
NODE *head = NULL;//设置头节点指针
for(i = 1; i <= x; i++)
{
current = (NODE *)malloc(sizeof(NODE));//创建新的节点
printf("请输入第%d个节点的数据:",i);
scanf("%d",¤t->data);
current->next = NULL;
if(head == NULL)
head = current;//如果头指针为空,则让头指针指向节点
else
pre->next = current;//否则让上一个节点的next指向当前新创建的节点
pre = current;
}
current->next = head;//链表创建完后让最后一个节点指向头指针实现循环
return head;
}
void display(NODE *head, int x)
{
NODE *p;
p = head;
int count = 0;
while(p != NULL && count != x)//遍历,循环输出链表
{
printf("%d\n",p->data);
count++;
p = p->next;
}
printf("%d个循环链表的节点元素已经输出完毕!",x);
}