数据结构实验报告_数据结构实验报告总

其他范文 时间:2020-02-28 18:44:50 收藏本文下载本文
【www.daodoc.com - 其他范文】

数据结构实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构实验报告总”。

数据结构实验报告

指导教师 姓

名班

级学

号实

验 室

黄梅根

钟志伟 0140703 07310325 S331-B

2008-11-29

单链表的插入和删除实验日志

指导教师:黄梅根

实验时间:2008年10月14日 学院 通信学院 专业信息工程

班级0140703 学号07310325姓名 钟志伟 实验室S331-B

实验题目:

单链表的插入和删除 实验目的:

了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。实验要求:

建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。实验主要步骤:分析、理解程序。调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。3 修改程序:

增加插入结点的功能。

将建立链表的方法改为头插入法。

实验结果:

心得体会:

通过本次实验,我了基本上掌握了线性表的逻辑结构和链式存储结构,从中也发现自己在这方面的知识掌握的还不是很扎实,下来要多看书,将基本的知识要掌握牢固。

二叉树操作实验日志

指导教师:黄梅根

实验时间:2008年 10 月28 日 学院 通信学院 专业信息工程

班级0140703 学号07310325姓名 钟志伟 实验室S331-B 实验题目: 二叉树操作

实验目的:

掌握二叉树的定义、性质及存储方式,各种遍历算法。

实验要求:

采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作。

实验主要步骤;1.分析、理解程序。

2.添加中序和后序遍历算法.3.调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求所有叶子及结点总数。

实验结果:

心得体会:

通过此次实验,我基本掌握了建立二叉树,并且掌握了先序、中序和后序以及按层次遍历的操作,更好的掌握了书本上的知识。

图的遍历操作实验日志

指导教师:黄梅根

实验时间:2008年 11 月 11 日 学院 通信学院 专业 信息工程

班级 0140703 学号 07310325姓名 钟志伟实验室S331-B 实验题目:

图的遍历操作 实验目的:

掌握有向图和无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS及BFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。实验要求:

采用邻接矩阵和邻接链表作为图的存储结构,完成有向图和无向图的DFS和BFS操作。实验主要步骤:

1、分析、理解程序。

2、调试程序。设计一个有向图和一个无向图,任选一种存储结构,完成有向图和无向图的DFS(深度优先遍历)和BFS(广度优先遍历)的操作。

实验结果:

心得体会:

通过本次实验,我掌握了有向图和无向图的一些概念,了解了DFS和BFS对图的遍历操作。

循环链表实验日志

指导教师:黄梅根

实验时间:2008年 11 月 25 日 学院 通信学院 专业 信息工程

班级 0140703 学号 07310325 姓名 钟志伟 实验室S331-B 实验目的:

了解和掌握线性表的逻辑结构和链式存储结构,掌握循环链表的基本算法及相关的时间性能分析。

实验要求:

1.实现循环链表的建立

2.输出循环链表节点的指针序列,要求先输出自身的指针,再输出其指向的 节点的指针。如一个有五个节点的循环链表,各节点地址依次为3109,3290,3106,3595,3390,则输出应为:

3109

3290

3290 3106

3106 3595

3595 3390

3390

3109 3.对链表进行由大到小的排序,输出排序完成后的链表和链表的指针序列。

源代码:

#include“stdio.h” #include“string.h” #include“stdlib.h” #include“ctype.h” typedef struct node

//定义结点

{ char data[10];

//结点的数据域为字符串

struct node *next;

//结点的指针域

}ListNode;typedef ListNode * LinkList;

// 自定义LinkList单链表类型 LinkList CreatListR1();

//函数,用尾插入法建立带头结点的单链表 ListNode *LocateNode();

//函数,按值查找结点 void DeleteList();

//函数,删除指定值的结点 void printlist();

//函数,打印链表中的所有值

void DeleteAll();

//函数,删除所有结点,释放内存

//==========按值查找结点,找到则返回该结点的位置,否则返回NULL========== ListNode *LocateNode(LinkList head, char *key){

ListNode *p=head->next;//从开始结点比较

while(p&&strcmp(p->data,key)!=0)//直到p为NULL或p-> data为key止

p=p->next;

//扫描下一个结点

return p;

//若p=NULL则查找失败,否则p指向找到的值为key的结点 }

//==========用尾插入法建立带头结点的单链表=========== LinkList CreatListR1(void){

char ch[10];

LinkList head=(LinkList)malloc(sizeof(ListNode));//生成头结点

ListNode *s,*r,*pp;

r=head;

r->next=head;

printf(“Input # to end ”);//输入“#”代表输入结束

printf(“Please input Node_data:”);

scanf(“%s”,ch);

//输入各结点的字符串

while(strcmp(ch,“#”)!=0){

// pp=LocateNode(head,ch);

//按值查找结点,返回结点指针

// if(pp==NULL)

{

//没有重复的字符串,插入到链表中

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

strcpy(s->data,ch);

r->next=s;

r=s;

r->next=head;

}

printf(“Input # to end ”);

printf(“Please input Node_data:”);

scanf(“%s”,ch);

}

return head;

//返回头指针 } //==========删除带头结点的单链表中的指定结点======= void DeleteList(LinkList head,char *key){

ListNode *p,*r,*q=head;

p=LocateNode(head,key);

//按key值查找结点的 if(p==NULL){

//若没有找到结点,退出

printf(“position error”);

exit(0);

}

while(q->next!=p)

//p为要删除的结点,q为p的前结点

q=q->next;

r=q->next;

q->next=r->next;

free(r);

//释放结点 } //===========打印链表======= void printlist(LinkList head){

ListNode *p=head->next;

//从开始结点打印

while(p!=head){ printf(“%s,%sn ”,p->data,p->next);

p=p->next;

}

printf(“n”);} //==========删除所有结点,释放空间=========== void DeleteAll(LinkList head){

ListNode *p=head,*r;

while(p->next){ r=p->next;

free(p);p=r;

}

free(p);}

//==========主函数============== void main(){

char ch[10],num[10];

LinkList head;

head=CreatListR1();

//用尾插入法建立单链表,返回头指针

printlist(head);

//遍历链表输出其值

printf(“ Delete node(y/n):”);//输入“y”或“n”去选择是否删除结点

scanf(“%s”,num);

if(strcmp(num,“y”)==0 || strcmp(num,“Y”)==0){

printf(“Please input Delete_data:”);

scanf(“%s”,ch);

//输入要删除的字符串

DeleteList(head,ch);

printlist(head);

}

DeleteAll(head);

//删除所有结点,释放内存 }

实验结果:

心得体会:

通过本次实验,我了解了线性表的逻辑结构和链式结构,从中也发现自己在一些知识上掌握的不是很牢固,自己下来要多看书。

下载数据结构实验报告word格式文档
下载数据结构实验报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文