您的位置:首页 > 其它

单循环链表的实现

2006-01-25 02:45 239 查看
循环链表(Circular Linked List)是一种首尾相接的链表,它与单链表的唯一区别在于对尾结点的处理;
因为在单链表中尾结点的指针域NULL改为指向头结点就得到了单循环链表。单循环链表可以用头指针

head或尾指针rear表示,用尾指针rear表示的单循环链表查找开始结点a1和尾结点an就很方便;查找

时间都是O(1)。

仅设尾指针rear的单循环链表的实现:

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
int data;
struct node *next;
}linklist;
linklist *rear=NULL;

linklist* CreateSingleLoopList() //单循环链表的实现
{
int _data;
linklist *pCurrent,*head;
head = (linklist*)malloc(sizeof(linklist));
scanf("%d",&_data);
rear->data = _data;
rear->next = head;
head->next = rear;
scanf("%d",&_data);
while (_data != -1)
{
pCurrent = (linklist*)malloc(sizeof(linklist));
pCurrent->data = _data;
rear->next = pCurrent;
pCurrent->next = head;
rear = pCurrent;
scanf("%d",&_data);
}
return rear;
}

void GetRearHead(linklist *p) //取开始结点和尾结点
{
printf("%d,",p->data); //终端结点an
printf("%d,",p->next->next->data); //开始结点a1
}

int main(void)
{
rear = (linklist*)malloc(sizeof(linklist));
CreateSingleLoopList();
GetRearHead(rear);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: