实验二 单链表基本操作的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二单链表基本操作的实现
【实验课程名称】数据结构
【实验项目名称】单链表基本操作的实现
【实验目的】
1 理解单链表的存储结构及基本操作的定义;
2掌握单链表存储基本操作;
3学会设计实验数据验证程序。
【实验仪器及环境】计算机,window xp操作系统,VC++6.0
【实验内容及步骤】
1.单链表顺序存储基本操作
存储结构定义:
typedef struct LNode{ //结点类型
ElemType data;
struct LNode *next;
}*Link,*Position;
typedef struct{ //链表类型
Link head,tail;
int len;
}LinkList;
实现的基本操作:
#include
#include
#include
#include
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;
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;
cout< 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; 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) L.head->next=q=s; else L.tail->next=q=s; while(q->next) { q=q->next; } L.tail=q; return OK; }