数据结构单链表实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程实验报告

实验名称单链表实验序号 2 实验日期

姓名院系班级学号

专业指导教师成绩

教师评语

一、实验目的和要求

(1)理解线形表的逻辑结构特征

(2)理解并掌握单链表

(3)了解单链表的各种基本运算

二、实验项目摘要

编写一个程序algo2-2.cpp,实现单链表的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)初始化顺序表h;

(2)依次采用尾插法插入a,b,c,d,e元素;

(3)输出单链表h;

(4)输出单链表h长度;

(5)判断单链表h是否为空;

(6)输出单链表h的第3个元素;

(7)输出元素’a’的位置;

(8)在第4个元素位置上插入’f’元素;

(9)输出单链表h;

(10)删除H的第3个元素;

(11)输出单链表h;

(12)释放单链表h。

三、实验预习内容

单链表的基本运算,包括:插入结点运算,删除结点运算,建立单链表,线形表基本运算实现。

三、实验结果与分析

#include

#include

typedef char ElemType;

typedef struct LNode

{

ElemType data;

struct LNode *next;

}LinkList;

void InitList(LinkList *&L)

{

L=(LinkList *)malloc(sizeof(LinkList));

L->next=NULL;

}

void CreateListR(LinkList *&L,ElemType a[],int n) {

LinkList *s,*r;int i;

L=(LinkList *)malloc(sizeof(LinkList));

r=L;

for(i=0;i

{

s=(LinkList *)malloc(sizeof(LinkList));

s->data=a[i];

r->next=s;

r=s;

}

r->next=NULL;

}

void DispList(LinkList *L)

{

LinkList *p=L->next;

while(p!=NULL)

{

printf("%c",p->data);

p=p->next;

}

printf("\n");

}

int ListLength(LinkList *L)

{

LinkList *p=L;int n=0;

while(p->next!=NULL)

{

n++;

p=p->next;

}

return(n);

}

int ListEmpty(LinkList *L)

{

return(L->next==NULL);

}

int ListInsert(LinkList *&L,int i,ElemType e) {

int j=0;

LinkList *p=L,*s;

while(j

{

j++;

p=p->next;

}

if(p==NULL)

return 0;

else

{

s=(LinkList *)malloc(sizeof(LinkList));

s->data=e;

s->next=p->next;

p->next=s;

return 1;

}

}

int LocateElem(LinkList *L,ElemType e) {

LinkList *p=L->next;

int i=1;

while(p!=NULL&&p->data!=e)

{

p=p->next;

i++;

}

if(p==NULL)

return(0);

else

return(i);

}

int GetElem(LinkList *L,int i,ElemType &e) {

int j=0;

LinkList *p=L;

while(j

{

j++;

p=p->next;

}

if(p==NULL)

return 0;

else

{

e=p->data;

return 1;

}

}

int ListDelete(LinkList *&L,int i,ElemType &e) {

int j=0;

LinkList *p=L,*q;

while(j

{

j++;

p=p->next;

}

if(p==NULL)

return 0;

else

{

q=p->next;

if(q==NULL) return 0;

e=q->data;

p->next=q->next;

free(q);

return 1;

}

}

void DestroyList(LinkList *&L)

{

LinkList *p=L,*q=p->next;

while(q!=NULL)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

int main()

{

LinkList *h;

ElemType e;

相关文档
最新文档