数据结构--循环单链表
来源:互联网 发布:餐厅预订软件 编辑:程序博客网 时间:2024/05/17 02:00
循环链表的存储结构和单链表是相同的。不同的地方是循环单链表的最后一个指针指向了头结点,不是单链表的“NULL”,这样有表尾很容易找到表头,但是由表头到表尾如果链表很长,则会很费时。因而,循环单链表设置尾指针而不是头指针。
存储结构
typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;基本操作如下:
//初始化单链表void InitList(LinkList &L){ L=(LinkList)malloc(sizeof(LNode)); if(!L) { printf("空间分配失败!"); exit(0); } L->next=L;}//销毁链表void DestroyList(LinkList &L){ LinkList p=L->next; while (p!=L) { q=p->next; free(p); p=q; } free(L); L=NULL;}//判断单链表是否为空bool ListEmpty(LinkList L){ if (L->next==L) return true; else return false;}//求单链表的长度int LengthList(LinkList L){ int len=0; LinkList p=L->next->next; while (p!=L->next) { ++len; p=p->next; } return len;}//清空整个链表void ClearList_CL(LinkList &L)//改变了L要使用引用{ L=L->next; LinkList q,p=L->next; while (p!=L) { q=p->next; free(p); p=q; } L->next=L;}//查找位置为i的元素的值void GetElem_CL(LinkList L,int i,int &e){ int j=1; LinkList p=L->next->next; if(i<0||i>LengthList(L)) return; while(j<i) { ++j; p=p->next; } e=p->data;}//查找当前元素相等的上一个元素void Prior_Elem(LinkList L,int cur_elem,int &pre_elem){ LinkList p=L->next->next,q; q=p->next; while (p!=L->next) { if(q->data==cur_elem) { pre_elem=p->data; return; } p=q; q=q->next; }}//查找当前元素的下一个元素void Next_Elem(LinkList L,int cur_elem,int &next_elem){ LinkList p=L->next->next; while (p->next!=L->next) { if(cur_elem==p->data) { next_elem=p->next->data; return; } p=p->next; }}//寻找和e相等元素的位置int LocateElem_CL(LinkList L,int e){ LinkList p=L->next->next; int pos=0; while (p!=L->next) { ++pos; if(e==p->data) return pos; p=p->next; } return 0;}//插入单链表void ListInsert_CL(LinkList &L,int i,int e)//改变L{ int j=0;//计数器 LinkList p=L->next,s; while (j<i-1) { ++j; p=p->next; } s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; if(p==L) L=s;}//删除单链表中的元素void ListDelete_CL(LinkList &L,int i,int &e)//改变L{ int j=0;//计数器 LinkList q,p=L->next; while (j<i-1) { ++j; p=p->next; } if(p->next==L->next) return; q=p->next; p->next=q->next; e=q->data; if(L==q) L=p; free(q);}
- 数据结构--循环单链表
- 数据结构--循环单链表
- 基本数据结构:循环单链表
- 基本数据结构:循环单链表
- 数据结构之循环单链表
- 数据结构体模版---循环单链表
- 数据结构——循环单链表
- java数据结构之循环单链表
- 【C语言数据结构】循环单链表
- 经典数据结构与算法之循环单链表
- 【数据结构】 循环单链表 约瑟夫回环问题
- 数据结构之线性结构 --循环单链表
- 数据结构之俩循环单链表合并
- 数据结构之循环队列
- 数据结构实现循环双链表
- 数据结构 循环链表
- 循环队列(数据结构)
- 数据结构_循环队列
- GeoJSON介绍
- 基于Github参与eoe的开源项目指南
- Linux常用命令总结
- tcp通信函数详解
- yyyy
- 数据结构--循环单链表
- lftp下载上传限速
- 代码的坏味道之二十一 :Refused Bequest(被拒绝的遗贈)
- QT中OPENGL的实时绘制
- socket同步异步,阻塞,非阻塞的概念解析集合
- 从B 树、B+ 树、B* 树谈到R 树
- flume 几个比较有用的source、sink和decorator
- php中使用GD处理图片时,php文件为UTF-8编码时不能正常运行的问题
- asp.net 导出Excel时 身份证号码的正确导出