数据结构-实验2-单链表的基本运算

2019-01-18 18:41

上海应用技术学院

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

实验名称 姓 名 专 业 教师评语 单链表的基本运算 曹志华 院系 计算机科学与信息工程学院 实验序号 班 级 指导教师 2 101041C1 武伟 实验日期 学 号 成 绩 2012-4-8 1010411501 计算机科学与技术 一、实验目的和要求 1. 了解单链表基本运算的实现; 2. 进一步掌握链表使用的步骤; 3. 牢固掌握建立单链表算法,特别是尾插法建表算法,是很多其他复杂复杂的基础; 二、实验项目摘要 编写一个程序algo2-2.cpp.实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能: 1. 初始化顺序表h; 2. 依次采用尾插法插入a,b,c,d,e元素; 3. 输出单链表h; 4. 输出单链表h长度; 5. 6. 7. 8. 判断单链表h是否为空; 输出单链表h的第3个元素; 输出元素’a’ 的位置; 在第4个元素位置上插入“f”元素; 9. 输出单链表h; 10. 删除单链表h的第3个元素; 11. 输出单链表h; 12. 释放单链表h。 三、实验预习内容 单链表基本运算的实现:单链表中,每一个结点有一个指针域指向直接后继。 ? 插入结点运算 ? ? ? 删除结点运算 建立单链表 线性表基本运算的实现 1. 初始化线性表 2. 求线性表的长度 3. 判断该线性表是否为空 4. 销毁线性表 5. 求线性表中某个数据元素值 6. 按元素查找 计算机科学与信息工程学院·2010年编制

上海应用技术学院

7. 插入数据元素 8. 删除数据元素 9. 输出线性表

三、实验结果与分析 1. 实验结果:

2. 实验分析:

这次实验与上次的顺序表很相似,但相比之下,单链表比较难一些,通过这次实验我明白了什么是线性表的链式存储结构,在编写程序时出现了很多错误,但通过看书,查找资料慢慢改进,在改进中也学会了很多,比如了解了单链表基本运算算法的基本格式和构成。虽然有很多不足,但在今后的实验中我会慢慢改进。

计算机科学与信息工程学院·2010年编制

上海应用技术学院

3. 源程序

#include #include //#define maxsize 1024 typedef char ElemType; typedef struct node {

ElemType data; struct node *next; }LinkList;

//初始化线性表

void InitList (LinkList *&h) {

h=(LinkList *)malloc(sizeof(LinkList)); h->next=NULL; }

//求线性表的长度 int ListLength(LinkList *h) {

int i=0;

LinkList *p=h->next; while(p!=NULL) { }

i++; p=p->next;

return i;

}

//求出线性表中第i个元素

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

int j=0;

LinkList *p=h->next; if(i<1||i>ListLength(h)) return (0); while(j

p=p->next; j++; }

e=p->data;

计算机科学与信息工程学院·2010年编制

上海应用技术学院

return (1); }

//判断单链表是否为空 int ListEmpty (LinkList *h) {

return(h->next==NULL); }

//输出元素的位置(按元素值查找) int LocateElem(LinkList *h,ElemType e) {

LinkList *p=h->next; int i=1;

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

p=p->next; i++; }

if(p==NULL)

return(0); else

return(i); }

//插入数据元素

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

int j=0;

LinkList *p=h,*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;

计算机科学与信息工程学院·2010年编制

上海应用技术学院

}

return 1;

}

//删除数据元素

int ListDelete (LinkList *&h,int i,ElemType &e) { int j=0;

LinkList *p=h,*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; }

}

//销毁线性表

int DestroyList(LinkList *&h) {

LinkList *p=h,*q=p->next; while(q!=NULL) {

free(p); p=q;

q=p->next; }

free(p); }

//输出线性表

int DispList (LinkList *h) {

LinkList *p=h->next;

计算机科学与信息工程学院·2010年编制


数据结构-实验2-单链表的基本运算.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广东省惠州市2016届高三第一次调研考试 理科数学(全国卷版)试

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: