20XX数据结构实验报告.docx
- 文档编号:2774721
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:5
- 大小:16.71KB
20XX数据结构实验报告.docx
《20XX数据结构实验报告.docx》由会员分享,可在线阅读,更多相关《20XX数据结构实验报告.docx(5页珍藏版)》请在冰豆网上搜索。
20XX数据结构实验报告
20XX数据结构实验报告
课程名称:
实验项目:
实验地点:
专业班级:
学生姓名:
指导教师:
数据结构 实验一线性表 博学楼B座 学号:
20XX
杨崇艳
20XX年11月02日
实验一线性表
一.实验目的
二.实验例题
[问题描述]
用链表形式存储一个字符串,插入、删除某个字符,最后按正序、逆序两种方式输出字符串。
[输入]
初始字符串,插入位置,插入字符,删除字符。
[输出]
已建立链表,插入字符后链表,删除字符后链表,逆转后链表。
[存储结构]
采用链式存储结构[算法的基本思想]
建立链表:
当读入字符不是结束符时,给结点分配存储空间,写数据域,将新结点插到表尾;插入字符:
根据读入的字符在链表中找插入位置,将新结点插入到该位置之前;删除字符:
根据读入的删除字符在链表中找到被删结点后,将其从链表中删除;链表逆转:
从链表的第一个结点开始对所有结点处理,将每个结点的前驱变为它的后继;打印链表:
从链表的第一个结点开始,依次打印各个结点的数据域。
三.程序清单
#defineNULL0
typedefstructnode{ chara;
structnode*link;}node,*nodelink;
voidreadlink(nodelinkhead){ nodelinkp,q; charc; p=head;
printf(\scanf(\ if(c=='\\n')printf(\。
\ while(c!
='\\n')
{q=(nodelink)malloc(sizeof(node));q->a=c; p->link=q;p=q; scanf(\ }
p->link=NULL;}
voidwritelink(nodelinkhead) {nodelinkq;
if(head->link==NULL)printf(\。
\\n\ for(q=head->link;q;q=q->link)printf(\ printf(\ }
intinsert(nodelinkhead,chark1,chark2) {nodelinkp,q; p=head->link;
while(p->a!
=k1&&p)p=p->link;
if(p){q=(nodelink)malloc(sizeof(node));
q->a=k2; q->link=p->link;p->link=q;return1; }
else{printf(\}}
intdelete(nodelinkhead,chark){nodelinkp,q;
q=head; p=head->link;
while(((p->a)!
=k)&&p){q=q->link;p=p->link;} if(p){q->link=p->link;return1;}
else{printf(\}
voidopside(nodelinkhead){nodelinkp,q; p=head->link;
while(p->link){q=p->link;p->link=q->link;q->link=head->link;head->link=q;}}main
{chark1,k2,k3; nodelinkhead;
head=(nodelink)malloc(sizeof(node));head->link=NULL; readlink(head);
if(head->link!
=NULL)
{printf(\ if(head->link!
=NULL)
{printf(\ k1=getch; printf(\
printf(\k2=getch; printf(\
if(insert(head,k1,k2))
{printf(\ printf(\k3=getch; printf(\ if(delete(head,k3))
{printf(\writelink(head);} if(head->link!
=NULL)
{printf(\writelink(head);free(head);} }}
四.运行结果
Inputalinktable(astring):
dfkdspogjdj↙Buildlinkis:
dfkdspogjdj
Pleaseinputacharyouwanttoinsertafter:
s↙Pleaseinputacharyouwanttoinsert:
n↙Afterpinserty,linkis:
dfkdsnpogjdj
Pleaseinputacharyouwanttodelete:
k↙afterdeletep,linkis:
dfdsnpogjdjOpsiteresultis:
jdjgopnsdfd
五.实验结果与分析
通过本实验,我熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。
丰富了编程经验,提高了对顺序存储结构的知识点的理解和掌握。
课程名称:
实验项目:
实验地点:
专业班级:
学生姓名:
指导教师:
数据结构 实验二树 博学楼B座 学号:
20XX00
杨崇艳
20XX年11月02日
实验二树
一.实验目的
二.实验例题
[问题描述]
任意给定一棵二叉树。
试设计一个程序,在计算机中构造该二叉树,并对它进行遍历。
[输入]
一棵二叉树的结点若无子树,则可将其子树看作“.”,输入时,按照前序序列的顺序输入该结点的内容。
对下图,其输入序列为ABD..EH....G..。
[输出]
若为空二叉树,则输出:
THISISAEMPTYBINARYTREE。
若二叉树不空,按后序序列输出,对上例,输出结果为:
DHEBIFGCA。
[存储结构]
采用二叉链表存储。
[算法的基本思想]
采用递归方法建立和遍历二叉树。
首先建立二叉树的根结点,然后建立其左右子树,直到空子树为止。
后序遍历二叉树时,先遍历左子树,后遍历右子树,最后访问根结点。
三.程序清单
#include#includestructnode {charinfo;
structnode*llink,*rlink; };
typedefstructnodeNODE;NODE*creat{charx; NODE*p;
scanf(\printf(\ if(x!
='.')
{p=(NODE*)malloc(sizeof(NODE)); p->info=x;
p->llink=creat;
p->rlink=creat; }
elsep=NULL; returnp;}
实验四查找
一.实验目的
二.实验例题
[问题描述]
将折半查找算法写成完整的程序,并上机通过。
[输入]
有序表及待查找记录23,58。
[输出]
输入23,表中存在待查找记录,则显示该记录在表中位置2,输入58显示该记录不存在。
[存储结构]
有序表采用顺序方式存储。
[算法的基本思想]
首先用待查找记录与查找区间中间位置记录比较,若相等则查找成功,返回该记录在表中的位置数,若小于中间位置记录,则修改区间上界为中间位置减1,若大于中间位置记录,则修改区间下界为中间位置加1,在新的区间内继续查找。
当查找区间下界大于上界,则该记录不存在。
三.程序清单
#include\typedefstruct{inta[30];intlength;}sqtable;sqtablest;intb=0;
voidcreatest(intk){inti;
printf(\data:
\[0]=-100;
for(i=1;(!
b&&(itypedefintnode;nodeafile[20];nodex;intd,dl,n;intl,r,i,j;
voidq(intl,intr){ intp; d++; if(dlx)&&(j>i))
j--; if(ii))
i++; if(ia=c; p->link=q;p=q; scanf(\ }
p->link=NULL;}
voidwritelink(nodelinkhead) {nodelinkq;
if(head->link==NULL)printf(\。
\\n\ for(q=head->link;q;q=q->link)printf(\ printf(\ }
intinsert(nodelinkhead,chark1,chark2) {nodelinkp,q; p=head->link;
while(p->a!
=k1&&p)p=p->link;
if(p){q=(nodelink)malloc(sizeof(node));
q->a=k2; q->link=p->link;p->link=q;return1; }
else{printf(\}}
intdelete(nodelinkhead,chark){nodelinkp,q;
q=head; p=head->link;
while(((p->a)!
=k)&&p){q=q->link;p=p->link;} if(p){q->link=p->link;return1;}
else{printf(\}
voidopside(nodelinkhead){nodelinkp,q; p=head->link;
while(p->link){q=p->link;p->link=q->link;q->link=head->link;head->link=q;}}main
{chark1,k2,k3; nodelinkhead;
head=(nodelink)malloc(sizeof(node));head->link=NULL; readlink(head);
if(head->link!
=NULL)
{printf(\ if(head->link!
=NULL)
{printf(\ k1=getch; printf(\
printf(\k2=getch; printf(\
if(insert(head,k1,k2))
{printf(\ printf(\k3=getch; printf(\ if(delete(head,k3))
{printf(\writelink(head);} if(head->link!
=NULL)
{printf(\writelink(head);fre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20 XX 数据结构 实验 报告