数据结构 -->线性表的链式实现 ADT
2016-07-09 16:44
471 查看
typedef int Elemtype; typedef struct LNode { Elemtype data; LNode *next; }LNode,*LinkList; void InitList(LinkList &L) {//初始化 L = new LNode; L->next = NULL; }
bool GetElem(LinkList &L,int i,Elemtype &e) {//查找序号为i的元素,并且用e返回值 int j=1; LNode *p = L->next; while(p&&j<i) { p = p->next; j++; }//当j = i或链表读到结尾时结束循环 if(!p || j>i) return ERROR; //i>n or i<=0 e = p->data; return OK; }
LNode *LocateElem(LinkList &L,Elemtype e) {//查找值为e的元素并返回它的地址 LNode * p = L->next; while(p && p->data!=e) p = p->next; return p; }
bool ListInsert(LinkList &L,int i,Elemtype e) {//在第i个位置插入值为e的结点 LNode *p = L;int j=0; while(p && j<i-1) { p = p->next; j++; } if(!p || j>i-1) return ERROR; LNode *s = new LNode; s->data = e; s->next = p->next; p->next = s; return OK; }
bool ListDelete(LinkList &L,int i) {//删除第i个元素 LNode *p = L; int j=0; while(p && j<i-1) { p = p->next; j++; } if(!p ||j>i-1) return ERROR; LNode *s = p->next; p->next = p->next->next; delete s; return OK; }
void CreateList_Head(LinkList &L,int n) {//头插法插入n个元素 L = new LNode; L->next = NULL; // 先建立一个带头结点的空链表 for(int i=1;i<=n;i++) { LNode *p = new LNode; cin>>p->data; p->next = L->next; L->next = p; } }
void CreateList_Tail(LinkList &L,int n) { L = new LNode; L->next = NULL; //初始化 LNode *Tail = L; for(int i=1;i<=n;i++) { LNode *p = new LNode; cin>>p->data; Tail->next = p; p->next = NULL; Tail = Tail->next; } }
void ListPrint(LinkList &L) {//全表遍历输出 LNode *p = L->next; while(p) { cout << p->data<<" "; p = p->next; } }
相关文章推荐
- java中自己用过的数据结构(队列Queue、优先级队列PriorityQueue和栈Stack),及其分别的应用场景
- 天梯赛 L2-012. 关于堆的判断 数据结构
- 红黑树详解 原理 史上最强 精华
- 树形结构与层次结构相互转换
- MySQL索引背后的数据结构及算法原理
- 红黑树--(下)
- 二叉树应用-最小堆类模板的实现(数据结构基础 第6周)
- Donut Decoration
- 二叉树基础-实现堆结构(数据结构基础 第5周)
- 数据结构高分笔记 算法2-18~2-19:双向循环链表
- 单链表查找倒数第k个元素
- 树的实现和二叉树的定义
- 【数据结构与算法】十八 二叉树遍历 DFS 深度优先 迭代算法
- 数据结构高分笔记 算法2-8~2-11:链表的基本操作
- 若干数据结构 && 算法面试题【四】(更新ing)
- 数据结构高分笔记1327||HNCU1327:算法2-13~2-16:静态链表
- 红黑树
- 天梯赛 L2-011 玩转二叉树 数据结构
- 线性表包括顺序存储结构和链式存储结构
- 数据结构之最小生成树