带头结点的单链表的操作 学习总结
来源:互联网 发布:亚瑟士跑鞋推荐 知乎 编辑:程序博客网 时间:2024/06/07 05:51
带头结点的单链表的操作 学习总结
首先给出单链表的存储结构定义如下:
struct LNode{ Elemtype date; LNode* next;};typedef LNode* LinkList;
下面是带头结点的单链表的基本操作:
初始化
// 构造一个空线性表Lvoid InitList(LinkList& L){ // 产生头结点,并使L指向该头结点 L = (LinkList)malloc(sizeof(LNode)); if(!L) { // 异常 }}
销毁线性表
// 前提:线性表L存在void DestroyList(LinkList& L){ LinkList q; while(L) { q = L->next; // q指向头结点之后的第一个结点 free(L); L = q; // L现在指向头结点之后的第一个结点 }}
单链表置空
// 前提:单链表存在void ClearList(LinkList& L){ LinkList q = L->next; // q指向头结点之后的结点 L->next = NULL; DestroyList(q);}
单链表判空
int ListEmpty(LinkList& L){ if (L->next) { return FALSE; } else { return TRUE; }}
求单链表的长度
// 前提:单链表存在int ListLength(LinkList L){ int length = 0; LinkList q = L->next; // q指向头结点之后的结点 while(q) { length++; q = q->next; } return length;}
根据索引查找元素
int GetElem(LinkList L, int Index, ElemType& Element){ int LoopId = 1; LinkList q = L->next; // 直到q指向第Index个结点或第Index个结点不存在 while(q && LoopId < Index) { LoopId++; q = q->next; } if (!q || LoopId > Index) { return ERROR; } Element = q->data; return OK;}
根据元素找索引
int LocateElem(LinkList L, ElemType Element){ int Index = 0; LinkList q = L->next; while(q) { Index++; if(Element == L->data) { return Index; } q = q->next; } return 0;}
插入新元素
int ListInsert(LinkList L, int Index, ElemType Element){ int NumId = 0; LinkList p = L; LinkList s; // 查找第Index - 1 个结点 while(p && NumId < Index - 1) { NumId++; p = p->next; } if (!p || NumId > Index - 1) { return ERROR; } s = (LinkList)malloc(sizeof(LNode)); s->data = Element; s->next = p->next; p->next = s; return OK;}
删除元素
int ListDelete(LinkList L, int Index, ElemType& Element){ int NumId = 0; LinkList q, p = L; // p指向第Index个结点的前驱 while(p->next && NumId < Index - 1) { NumId++; p = p->next; } if(!p->next||j>i-1) return ERROR; q=p->next; p->next=q->next; e=q->data; free(q); return OK;}
0 0
- 带头结点的单链表的操作 学习总结
- 带头结点的单链表总结
- 带头结点的单链表的基本操作
- 不带头结点的单链表操作
- 带头结点的单链表
- 带头结点的单链表
- 带头结点的单链表
- 带头结点和不带头结点的单链表的尾插法以及各种操作
- 带头结点和不带头结点的单链表的尾插法以及各种操作
- 单链表的实现(带头结点)
- 单链表的实现(带头结点)
- 单链表的创建--带头结点
- 带头结点的单链表实现
- 不带头结点的单链表
- 不带头结点的单链表
- 带头结点单链表的建立
- 带头结点的循环单链表
- 带头结点与不带头结点的单链表-LinkList
- 360笔试题————计算器格式输出一个数的素因子乘积
- 黑盒测试
- 记录linux下c++编程
- GooglePlay内购In-app Billing 总结~
- A+B for Input-Output Practice (VIII)
- 带头结点的单链表的操作 学习总结
- Java使用MyEclipse构建webService简单案例
- 细说JDK动态代理的实现原理
- 数据结构之折半查找java实现
- 自定义函数[不断添加]
- 1~10平方的和
- 个人学习笔记---linux内核中内存具体管理
- 数据库分页查询技术以及实现查询随机数
- Netty5入门学习笔记003-TCP粘包/拆包问题的解决之道(下)