欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构C语言版实验报告2.docx

    • 资源ID:24940328       资源大小:59.09KB        全文页数:20页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构C语言版实验报告2.docx

    1、数据结构C语言版实验报告2数据结构(C语言版)实验报告专业:计算机科学与技术、软件工程班级:姓名:学号: 2软件二班朱海霞指导教师:刘遵仁青岛大学信息工程学院2013年10月实验1实验题目:顺序存储结构线性表的插入和删除实验目的:了解和掌握线性表的逻辑结构和顺序存储结构, 掌握线性表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为整数类型的线性表, 在表中允许有重复的数据; 根据输入的数据,先找到相应的存储单元,后删除之。实验主要步骤:1、 分析、理解给出的示例程序。2、 调试程序,并设计输入一组数据( 3,-5,6,8,2, -5,4,7,-9),测试程序的如下功 能:根据输入

    2、的数据,找到相应的存储单元并删除,显示表中所有的数据。程序代码:#in clude #in clude#defi ne OK 1#defi ne ERROR 0 #defi ne OVERFLOW -2#defi ne LIST_INIT_SIZE 100#defi ne LISTINCREMENT 10typ edef structint* elem;int len gth;int listsize;Sqlist;int In itList_Sq(Sqlist & L)L.elem=(i nt*)malloc(LIST_INIT_SIZE*sizeof(i nt); if(!L.elem)

    3、return -1;L.le ngth=0;L.listsize=LIST_INIT_SIZE;return OK;int ListI nsert_Sq(Sqlist&L,i nt i,i nt e)if(iL.le ngth+1) return ERROR;if(L.le ngth=L.listsize)int *n ewbase;newbase=(i nt*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(i nt); if(!n ewbase) retur n -1;L.elem=n ewbase;L.listsize+=LISTINCR

    4、EMENT;int *p ,*q;q=&(L.elemi-1);for(p=&(L.elemL.le ngth-1) ;p=q;-p)*( p+1)=* p;*q=e;+L.le ngth;return OK;int ListDelete_Sq(Sqlist & L,i nt i,i nt e)int *p ,*q;if(iL.le ngth)return ERROR;p=&(L.elemi-1);e=* p;q=L.elem+L .len gth-1;for(+p;p =q;+p)*(p-1)=* p;-L .len gth;return OK;int mai n()Sqlist L;Ini

    5、tList_Sq(L);/ 初始化int i,a=3,-5,6,8,2,-5,4,7,-9;for(i=1;i10;i+)ListI nsert_Sq(L,i,ai-1);for(i=0;i9;i+)prin tf( %d,L.elemi);printf(n);/ 插入 9个数ListI nsert_Sq(L,3,24);for(i=0;i10;i+)prin tf( %d,L.elemi);printf(n);/ 插入一个数int e;ListDelete_Sq(L,2, e);for(i=0;i9;i+)printf( %d,L.elemi);/ 删除一个数prin tf(n);retur

    6、n 0;实验结果:3,-5,6,8,2, -5,4,7, -93, -5,24,6,8,2, -5,4,7, -93,24,6,8,2, -5,4,7, -9心得体会:顺序存储结构是一种随机存取结构,存取任何元素的时间是一个常数,速度快; 结构简单,逻辑上相邻的元素在物理上也相邻;不使用指针,节省存储空间; 但是插入和删除元素需要移动大量元素,消耗大量时间;需要一个连续的存储 空间;插入元素可能发生溢出;自由区中的存储空间不能被其他数据共享实验2实验题目:单链表的插入和删除 实验目的:了解和掌握线性表的逻辑结构和链式存储结构, 掌握单链表的基本算法及相关的时间性能分析。实验要求:建立一个数据域

    7、定义为字符类型的单链表, 在链表中不允许有重复的字符; 根据输入的字符,先找到相应的结点,后删除之。实验主要步骤:3、 分析、理解给出的示例程序。4、 调试程序,并设计输入数据(如: A , C, E, F, H, J, Q, M),测试程序的如下功能: 不允许重复字符的插入;根据输入的字符,找到相应的结点并删除。5、 修改程序:(1) 增加插入结点的功能。(2) 建立链表的方法有 前插” 后插”法。程序代码:#in clude#in clude#defi ne NULL 0#defi ne OK 1#defi ne ERROR 0typ edef struct LNodeint data;s

    8、truct LNode *n ext;LNode,*L in kList;int In itList_L(Li nkList & L)L=(Li nkList)malloc(sizeof(LNode);L- next=NULL;return OK;int ListI nsert_L(Li nkList & L,i nt i,i nt e)Lin kList p,s;int j;p=L;j=O;while( p&jn ext;+j;if(! p|ji-1)return ERROR;s=(L in kList)malloc(sizeof(LNode); s-data=e;s-n ext =p-n

    9、ext;p-n ext=s;return OK;int ListDelete_L(Li nkList&L,int i,i nt & e)Lin kList p,q;int j;p=L;j=0;while( p- next&jn ext;+j;if(!( p- next)|jn ext ;p-n ext=q-n ext; e=q-data;free(q);return OK;int mai n()Lin kList L,p;char a8=A,C,E,F,H,J,Q,U; int i,j;In itList_L(L); for(i=1,j=0;i=8,jn ext;while( p!=NULL)

    10、prin tf(%ct, p-data); p=p-n ext;/插入八个字符prin tf(n);i=2;int e;ListI nsert_L(L,i,B); p=L-n ext;while( p!=NULL)prin tf(%ct, p-data); p=p-n ext;/插入一个字符prin tf(n);i=3;ListDelete_L(L,i,e); p=L-n ext;while( p!=NULL)prin tf(%ct, p-data); p=p-n ext;prin tf(n); return 0;实验结果:A C E F H J Q UA B C E F H J Q UA B

    11、 E F H J Q U心得体会:单链表是通过扫描指针 P进行单链表的操作;头指针唯一标识点链表的存在; 插入和删除元素快捷,方便。实验3实验题目:栈操作设计和实现实验目的:1掌握栈的顺序存储结构和链式存储结构,以便在实际中灵活应用。2、 掌握栈的特点,即后进先出和先进先出的原则。3、 掌握栈的基本运算,如:入栈与出栈等运算在顺序存储结构和链式存储结构上的实现。实验要求:回文判断:对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如abba是回文,而“ abab不是回文。实验主要步骤(1) 数据从键盘读入;(2) 输出要判断的字符串;(3) 利用栈的基本操作对给定的字符串判断其是

    12、否是回文,若是则输出“ No。“Yes”否则输出程序代码:#in clude#in clude#defi ne TRUE 1#defi ne FALSE 0#defi ne OK 1#defi ne ERROR 0#defi ne OVERFLOW -2#defi ne N 100#defi ne STACK_INIT_SIZE #defi ne STACKINCREMENT typ edef structintint10010*base;*top;stacksize;/在栈构造之前和销毁之后, base的值为NULL栈顶指针/当前已分配的存储空间,以元素为单位int SqStack;int

    13、In itStack(SqStack &S) /构造一个空栈Sif(!(S.base=(i nt *)malloc(STACK_INIT_SIZE*sizeof(i nt) exit(OVERFLOW); /存储分配失败S.t op=S.base;S.stacksize=STACK_INIT_SIZE;return OK;int StackE mp ty(SqStack S) /若栈S为空栈,则返回TRUE,否则返回FALSEif(S.to p=S.base)return TRUE;elsereturn FALSE;int P ush(SqStack & S, i nt e) /插入元素e为新

    14、的栈顶元素if(S.to p-S.base=S.stacksize)/ 栈满,追加存储空间S.base=(i nt *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(i nt);if(!S.base)exit(OVERFLOW); / 存储分配失败S.t op=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*(S.to p)+=e;return OK;int Pop (SqStack & S,i nt &e) II若栈不空,则删除S的栈顶元素,用e返回其值,并返回 OK ;否则返回ERROR

    15、if(S.to p=S.base)return ERROR;e=*-S.t op;return OK;int mai n()SqStack s;int i,e,j,k=1;char chN = 0,* p,bN = 0;if(I nitStack(s) / 初始化栈成功printf(请输入表达式:n);gets(ch);p=ch;while(* p) 没到串尾Push(s,* P+);for(i=0;iN;i+)if(!StackE mp ty(s) / 栈不空Pop(s,e); /弹出栈顶元素bi=e;for(i=0;i n,& G-e); / 输入顶点数和边数sca nf(%c, &a);

    16、/读入顶点信息,建立顶点表prin tf(I nput Vertex stri ng:); for(i=0;i n;i+) sca nf(%c, &a); G-vexsi=a;for(i=0;i n;i+)for(j=0;j n;j+)G-edgesij=0; /初始化邻接矩阵prin tf(I nput edges,Creat Adjace ncy Matrix n);for(k=0;ke;k+) /读入e条边,建立邻接矩阵scanf(%d%d,&i,&j); /输入边(Vi , Vj)的顶点序号G-edgesij=1;G-edgesji=1; /若为无向图,矩阵为对称矩阵;若建立有向图,去

    17、掉该条语句 /= 定义标志向量,为全局变量 =typ edef enu mFALSE,TRUE Boolea n;Boolean visitedMaxVertexNum;/=DFS :深度优先遍历的递归算法 =void DFSM(MGraph *G ,int i) /以Vi为出发点对邻接矩阵表示的图 G进行DFS搜索,邻接矩阵是 0, 1矩阵给出你的编码/=BFS :广度优先遍历=void BFS(MGra ph *G,i nt k) /以Vk为源点对用邻接矩阵表示的图 G进行广度优先搜索给出你的编码/=主程序 main void mai n()int i;MGraph *G;G=(MGra

    18、ph *)malloc(sizeof(MGra ph);CreatMGra ph(G); printf(Print Graph DFS:); DFS(G); prin tf(n);printf(Print Graph BFS:);BFS(G,3);prin tf(n);/为图G申请内存空间/健立邻接矩阵/深度优先遍历以序号为3的顶点开始广度优先遍历定义最大顶点数边表结点/邻接点域链域2.邻接链表作为存储结构#i ncludestdio.h#i ncludestdlib.h#defi ne MaxVertexNum 50 typ edef struct no deint adjvex;struc

    19、t node *n ext;EdgeNode;/=建立图的邻接表= void CreatALGra ph(ALGra ph *G) int i,j,k;char a;EdgeNode *s; /定义边表结点prin tf(I np ut VertexNum( n) and EdgesNum(e):);sca nf(%d,%d,&G- n,& G-e); / 读入顶点数和边数sca nf(%c, &a);II建立边表prin tf(I nput Vertex stri ng:);for(i=0;i n;i+)/读入顶点信息/边表置为空表scan f(%c,&a);G-adjlisti.verte

    20、x=a;G-adjlisti.firstedge=NULL;prin tf(I nput edges,Creat Adjace ncy List n);for(k=0;ke;k+) 建立边表scanf(%d%d,&i,&j); 读入边(Vi,Vj)的顶点对序号s=(EdgeNode *)malloc(sizeof(EdgeNode); / 生成边表结点s-adjvex=j; /邻接点序号为js-n ext=G-adjlisti.firstedge;G-adjlisti.firstedge=s; 将新结点*S插入顶点 Vi的边表头部s=(EdgeNode *)malloc(sizeof(Edge

    21、Node);s-adjvex=i; /邻接点序号为is-n ext=G-adjlistj.firstedge;G-adjlistj.firstedge=s; 将新结点*S插入顶点 Vj的边表头部 /= 定义标志向量,为全局变量 =typ edef enu mFALSE,TRUE Boolea n;Boolean visitedMaxVertexNum;/=DFS :深度优先遍历的递归算法 = void DFSM(ALGra ph *G,i nt i) /以Vi为出发点对邻接链表表示的图 G进行DFS搜索给出你的编码=BFS :广度优先遍历=void BFS(ALGraph *G ,int k)

    22、 /以Vk为源点对用邻接链表表示的图 G进行广度优先搜索给出你的编码/=主函数 void mai n()int i;ALGra ph *G;G=(ALGra ph *)malloc(sizeof(ALGra ph);CreatALGra ph(G);printf(Print Graph DFS:);DFS(G);prin tf(n);printf(Print Graph BFS:);BFS(G,3);prin tf(n);实验结果:1.邻接矩阵作为存储结构 2.邻接链表作为存储结构心得体会:实验6实验题目:二分查找算法的实现实验目的:掌握二分查找法的工作原理及应用过程,利用其工作原理完成实验题目中的内容。实验要求:编写程序构造一个有序表 L ,从键盘接收一个关键字 key,用二分查找法在L中查找key,若找到则提示查找成功并输出 key所在的位置,否则提示没有找到信息。 。程序代码实验结果:心得体会:实验7实验题目:排序实验目的:掌握各种排序方法的基本思想、排序过程、算法实现,能进行时间和空间性能的分析, 根据实际问题的特点和要求选择合适的排序方法。实验要求:实现直接排序、冒泡、直接选择、快速、堆、归并排序算法。比较各种算法的运行速度。实验主要步骤:程序代码实验结果:心得体会:


    注意事项

    本文(数据结构C语言版实验报告2.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开