数据结构--循环链表(C语言实现)


一.循环链表的设计

typedef struct CNode{	
      int data;	
      struct CNode* next;
}CNode ,*CList;

2.循环链表的示意图:

3.循环链表和单链表的区别:
 
唯一区别,没有空指针,尾节点的后继为头,为循环之意.

二.循环链表的实现

//初始化
	return true;
}

//返回key的前驱地址,如果不存在返回NULL;
CNode* GetPrio(CList plist, int key)
{
	CNode* p;
	for (p = plist; p->next != plist; p = p->next)
	{
		if (p->next ->data == key)
		{

			return p;
		}
	}
	return NULL;

}

//返回key的后继地址,如果不存在返回NULL;
CNode* GetNext(CList plist, int key)
{
	CNode* p = Search(plist, key);
	if (p == NULL)
		return NULL;
	return p->next;
}

//输出
void Show(CList plist)
{
	for (CNode* p = plist->next; p != plist; p = p->next)
	{
		printf("%d  ", p->data);
	}
	printf("\n");
}

//清空数据
void Clear(CList plist)
{
	Destroy(plist);
}

//销毁整个内存
void Destroy(CList plist)
{
	//总是删除第一个数据节点
	CNode* p;
	while (plist->next != plist)
	{
		p = plist->next;
		plist->next = p->next;
		free(p);
	}
}

三.循环链表的总结

循环链表其实和单链表是一样的操作,只是在处理的时候处理好尾节点即可,切记,遍历循环链表中不可出现NULL,若遍历的时候出现NULL就错了.


本篇完!

相关推荐

  1. C语言 数据结构循环

    2024-04-04 20:38:03       30 阅读
  2. C语言实现双向循环

    2024-04-04 20:38:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 20:38:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 20:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 20:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 20:38:03       18 阅读

热门阅读

  1. 【Python语法实例】-13发牌游戏代码高阶

    2024-04-04 20:38:03       14 阅读
  2. 【Leetcode】279.完全平方数

    2024-04-04 20:38:03       15 阅读
  3. Docker资源管理和分配指南

    2024-04-04 20:38:03       14 阅读
  4. qt实现文本高亮

    2024-04-04 20:38:03       15 阅读
  5. python 自制黄金矿工游戏(设计思路+源码)

    2024-04-04 20:38:03       14 阅读
  6. 【PostgreSQL】- 1.4 PostgreSQL 业务规划(创建 Schema)

    2024-04-04 20:38:03       13 阅读
  7. QT 线程的启动

    2024-04-04 20:38:03       13 阅读
  8. Dockerfile怎么写及运行启动方法

    2024-04-04 20:38:03       14 阅读
  9. 购买飞机票

    2024-04-04 20:38:03       15 阅读
  10. Avalonia笔记5-数据绑定

    2024-04-04 20:38:03       11 阅读