C++编程练习(2)----“实现简单的线性表的链式存储结构“
来源:互联网 发布:模拟通话环境软件 编辑:程序博客网 时间:2024/06/09 23:50
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素。
对于查找操作,单链表的时间复杂度为O(n)。
对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1)。
单链表不需要分配存储空间,只要有就可以分配,元素个数也不受限制。
链式存储结构中,结点由存放数据元素的数据域和存放后继结点地址的指针域组成。
具体代码如下:
#include<iostream>#define OK 1#define ERROR 0#define TRUE 1#define ERROR 0typedef int ElemType;typedef int Status;struct Node{public:Node():data(0),next(NULL) {};ElemType data;Node *next;Status GetElem(int i,ElemType *e) const;Status ListInsert(int i,ElemType e);Status ListDelete(int i,ElemType *e);Status ShowList();};Status Node::GetElem(int i,ElemType *e) const{int j=1;/*j为计数器*/Node *p=new Node;p=next;while (p && j<i){p=p->next;++j;}if (!p || j>i)return ERROR;*e=p->data;return OK;}/*初始条件:顺序线性表已存在,1<=i<=ListLength*//*操作结果:在表中第i个结点位置之前插入新的数据元素e,链表长度加1*/Status Node::ListInsert(int i,ElemType e){int j=1;Node *p=new Node;Node *s=new Node;p=this;while (p && j<i){p=p->next;++j;}if (!p || j>i)return ERROR;s->data=e;s->next=p->next;p->next=s;return OK;}/*初始条件:线性表已经存在,1<=i<=ListLength*//*操作结果:删除表的第i个结点,并用e返回其值,线性表长度减1*/Status Node::ListDelete(int i,ElemType *e){int j;Node* p=new Node;Node* q=new Node;p=this;j=1;while(p->next && j<i){p=p->next;++j;}if (!(p->next) || j>i)return ERROR;q=p->next;/*要删除的结点是p->next*/p->next=q->next;*e=q->data;delete q;return OK;}Status Node::ShowList() {Node* p=new Node;p=this;while (p->next){std::cout<<p->data<<" ";p=p->next;}std::cout<<p->data<<std::endl;return OK;}
单链表适用的场景:
1、需要频繁插入和删除时。
2、线性表中的元素个数变化较大或者根本不知道多大时。
0 0
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
- C语言实现线性表的链式存储结构
- 线性表的链式存储结构(C语言实现)
- 一、(2)C++ 实现简单的线性表(链式存储结构 - 单链表)
- C++编程练习(1)----“实现简单的线性表的顺序存储结构“
- C++编程练习(4)----“实现简单的栈的链式存储结构“
- C++编程练习(6)----“实现简单的队列的链式存储结构“
- 线性结构--->栈的链式存储实现
- 线性表的链式存储结构的实现
- 链式存储结构的线性表基本实现
- JAVA实现线性表的链式存储结构LinkedList
- 数据结构----纯C语言实现线性表的单向链式存储结构
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 线性表的链式存储结构
- 链式存储结构的线性表
- 线性表的链式存储结构
- 【数据结构】线性表的链式存储结构
- 线性表的链式存储结构
- POJ 最短路径
- ARM Cortex-A8体系结构基础
- 浏览器探究——webkit部分——解析HTML(2)解码和HTMLTokenizer的处理
- fedora20下安装netmap实践
- 浮点数转换成人民币读法字符串
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
- codeforces Round #237(div2) A解题报告
- 在不同应用之间共享数据ContentProvider,ContentResolver
- 参考函数
- 第三周作业-实现随机点名的签到程序 第五需求,头像版
- 动态规划(Dynamic Programming, DP)简介
- 浏览器探究——webkit部分——解析HTML(3)HTMLToken的处理
- 王垠—写给清华大学的退学申请
- Foundation框架NSSet