实验二 单链表基本操作的实现.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

您可能关注的文档

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档