- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 单链表基本操作的实现
实验二 单链表基本操作的实现
【实验课程名称】数据结构
【实验项目名称】单链表基本操作的实现
【实验目的】
1 理解单链表的存储结构及基本操作的定义;
2掌握单链表存储基本操作;
3学会设计实验数据验证程序。
【实验仪器及环境】计算机,window xp操作系统,VC++6.0
【实验内容及步骤】
单链表顺序存储基本操作
存储结构定义:
typedef struct LNode{ //结点类型
ElemType data;
struct LNode *next;
}*Link,*Position;
typedef struct{ //链表类型
Link head,tail;
int len;
}LinkList;
实现的基本操作:
#includeiostream
#includemalloc.h
#includestdlib.h
#includeiomanip
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct LNode{ //结点类型
ElemType data;
struct LNode *next;
}*Link,*Position;
typedef struct{ //链表类型
Link head,tail;
int len;
}LinkList;
Position MakeNode_L(Link p,ElemType e) //创建结点
{
p=(Link)malloc(sizeof(LNode));
if(!p) return ERROR;
p-data=e;
p-next=NULL;
return p;
}
void FreeNode_L(Link q) //释放结点
{
free(q);
}
Status InitList_L(LinkList L){
//初始化L为一个带头结点的空链表,头尾指针指向头结点,表长赋
ElemType e;
e=-1;//实际应用中此初始化语句需要修改
if(!MakeNode_L(L.head,e))return ERROR;//开辟头结点
L.tail=L.head;L.len=0;
return OK;
}//InitList_L
Status DestroyList_L(LinkList L){//销毁链表L
Link p;
while(p=L.head-next){//依次释放有序链表中第一个元素至最后一个元素所占用空间;
L.head-next=p-next;
free(p);
}
free(L.head);
L.head=NULL;L.tail=NULL;L.len=0;
coutendlThe list has been destroyed!endl;
return OK;
}//DestroyList_L
Status ClearList_L(LinkList L) {//清空线性单链表
Link p,q;
p=L.head-next;
while(p)
{
q=p-next;
free(p);
p=q;
}
L.tail=L.head;
L.len=0;
return OK;
}
Status InsFirst_L(LinkList L,Link s) //在首元素前插入一个结点
{
s-next=L.head-next;
if(!L.head-next)
L.tail=s;
L.head-next=s;
L.len++;
return OK;
}
Status DelFirst_L(LinkList L,Link h,Link q) //删除首结点
{
h=L.head;
q=L.head-next;
if(q)
{
h-next=q-next;
q-next=NULL;
if(!h-next)
L.tail=h;
L.len--;
return OK;
}
else
return ERROR;
}
Status Append_L(LinkList L,Link s) //将两个链表跟一个字符串连接起来
{
Link q;
if(!L.head-next)
您可能关注的文档
- 团队精神的班会公开课教案.doc
- 园林景观工程质量监控细则.doc
- 国内银行境外并购财务评价与战略评价的比较——以招商银行并购永隆银行为例.doc
- 国家精品案例库-人力资源管理案例.doc
- 国家职业资格培训教程——心理咨询师(基础知识 主编郭念锋) 第一章 基础心理学知识(纯手打整理).doc
- 国家职业资格培训教程——心理咨询师(基础知识 主编郭念锋) 第三章 发展心理学知识(纯手打整理).doc
- 国家职业资格培训教程——心理咨询师(基础知识 主编郭念锋) 第六章 咨询心理学知识(纯手打整理).doc
- 国家标准洗水符-借鉴.doc
- 国有资产转让流程.doc
- 国际公法第一章 导论.ppt
- 中国国家标准 GB/T 4797.3-2024环境条件分类 自然环境条件 第3部分:生物.pdf
- GB/T 4797.3-2024环境条件分类 自然环境条件 第3部分:生物.pdf
- 《GB/T 10395.28-2024农业机械 安全 第28部分:移动式谷物螺旋输送机》.pdf
- 中国国家标准 GB/T 10395.28-2024农业机械 安全 第28部分:移动式谷物螺旋输送机.pdf
- GB/T 10395.28-2024农业机械 安全 第28部分:移动式谷物螺旋输送机.pdf
- 高中数学学考复习优化练习20空间点、直线、平面之间的位置关系含答案.docx
- 刘静心 82003005 材加概论结课论文(2).pdf
- 社会实践登记表1.doc
- 刘静心 82003005 材加概论结课论文.docx
- 十三五全面二孩政策解读.ppt
文档评论(0)