循环单链表的创建
2013-06-08 14:19 Keiven_LY 阅读(1524) 评论(0) 收藏 举报说明:
循环链表(Circular Linked List,CL)是单链表的一种形式,它是首尾相连的链表,其特点就是将单链表的最后一个节点的指针域由NULL改为指向头节点,就得到了单链形式的循环链表。
源码:
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef int elementtype; /* 自定义类型 这里将elementtype定义为int类型 */ typedef struct CNode { elementtype data; struct CNode *next; }CNode; CNode *crt_linklist() /* 创建尾指针表示的循环链表 */ { CNode *rear; /* 定义尾指针 */ int a; /* 链表节点数据元素 */ CNode *p; rear=(CNode*)malloc(sizeof(CNode)); /* 为为指针节点分配内存空间 */ rear->data=-1; /* 区分节点为尾指针节点的标志 */ rear->next =rear; printf("请输入循环链表的元素(以-1结束):\n"); scanf_s("%d",&a); while(a!=-1) { p=(CNode*)malloc(sizeof(CNode)); p->data=a; p->next=rear->next; rear->next=p; scanf_s("%d",&a); } p=rear; while(p->next!=rear) { p=p->next; } return p; } void print(CNode *cl) { CNode *p; p=cl->next->next; while(p!=cl->next) { printf("%d ",p->data); p=p->next; } printf("\n"); } main() { CNode *clist; printf("建立循环链表,请输入数据!\n"); clist=crt_linklist(); printf("建立的循环链表为:\n"); print(clist); system("pause"); }
结果: