数据结构实验报告2doc.docx
- 文档编号:27652861
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:12
- 大小:41.83KB
数据结构实验报告2doc.docx
《数据结构实验报告2doc.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告2doc.docx(12页珍藏版)》请在冰豆网上搜索。
数据结构实验报告2doc
数学与计算科学学院
实验报告
实验项目名称线性表的链式表示
所属课程名称数据结构(C语言版)
实验类型验证型实验
实验日期2011年10月28日
班级信计1001班
学号201053100127
姓名
成绩
一、实验概述:
【实验目的】
1.掌握线性链表的逻辑结构特征:
总存在第一个和最后一个元素;除第一个元素以外,每个元素总存在唯一一个直接前驱元素;除最后一个元素以外,每个元素总存在唯一一个直接后继元素。
2.线性链表的特点:
逻辑结构上相邻物理结构上不相邻;是一种随机的存储结构。
3.通过上机实验验证顺序表的算法正确性,了解算法与程序的区别。
【实验原理】
线性链表的存储结构:
用一组任意的存储单元存储线性表的数据元素.
【实验环境】
VC++6.0
二、实验内容:
【实验方案】
首先建立一个带表头节点的单链线性表,然后调用输入函数给每个节点赋值,然后调用插入和删除函数插入和删除元素。
【实验过程】(实验步骤、记录、数据、分析)
在输入窗口输入:
#include
#include
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;
StatusGetElem_L(LinkListL,inti,ElemType&e)
{
p=L->next;
j=1;
while(p&&j
{
p=p->next;
++j;
}
if(!
p||j>i)
returnERROR;
e=p->data;
returnOK;
}
StatusListInsert_L(LinkList&L,inti,ElemTypee)
{
p=L;
j=0;
while(p&&j { p=p->next; ++j; } if(! p||j>i-1) returnERROR; s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; returnOK; } StatusListDelete_L(LinkList&L,inti,ElemType&e) { p=L j=0; while(p->next&&j { p=p->next; ++j; } if(! (p->next)||j>i-1) returnERROR; q=p->next; p->next=q->next; e=q->data; free(q); returnOK; } voidCreateList_L(LinkList&L,intn) { L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=n;i>0;--i) { p=(LinkList)malloc(sizeof(LNode)); scanf(&(p->data)); p->next=L->next; L->next=p; } } voidmain() {LinkListL;inti=5;LinkListp; CreateList_L(L,i); for(p=L->next;p;p=p->next) printf("%d",p->data); printf("\n"); inte;scanf("%d",&i); GetElem_L(L,i,e); printf("%d",e);printf("\n"); scanf("%d%d",&i,&e); ListInsert_L(L,i,e); for(p=L->next;p;p=p->next) printf("%d",p->data); printf("\n"); scanf("%d",&i); ListDelete_L(L,i,e); printf("%d",e); printf("\n"); for(p=L->next;p;p=p->next) printf("%d",p->data); } 然后进行调试,调试过程如下: 1.c: \documentsandsettings\xpclient\桌面\教学软件专区\123.cpp(18): errorC2065: 'p': undeclaredidentifier 改正方法: 在p=L->next;前加LinkListp; 2.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(20): errorC2065: 'j': undeclaredidentifier 改正方法: 在j=0前加intj; 2.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(35): errorC2065: 'p': undeclaredidentifier 改正方法: 在p=L前加LinkListp; 3.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(37): errorC2065: 'j': undeclaredidentifier 改正方法: 在j=0前加intj; 4.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(47): errorC2065: 's': undeclaredidentifier 改正方法: 将LinkListp;改成LinkListp,s; 5.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(56): errorC2065: 'p': undeclaredidentifier 改正方法: 在p=L前加LinkListp; 6.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(58): errorC2065: 'j': undeclaredidentifier 改正方法: 在j=0前加intj; 7.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(67): errorC2065: 'q': undeclaredidentifier 改正方法: 将LinkListp;改成LinkListp,q; 8.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(78): errorC2065: 'i': undeclaredidentifier 改正方法: 在L=(LinkList)malloc(sizeof(LNode));前加inti; 9.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(77): errorC2146: syntaxerror: missing';'beforeidentifier'L' 改正方法: 在inti;加LinkListp; 10.C: \DocumentsandSettings\XPCLIENT\桌面\教学软件专区\123.cpp(83): errorC2664: 'scanf': cannotconvertparameter1from'int*'to'constchar*' 改正方法: 将scanf(&(p->data));改成scanf("%d",&(p->data)); 此时窗口显示: 123.obj-0error(s),0warning(s)调试完毕。 再运行窗口输入,得到实验结果: 【实验结论】(结果) 【实验小结】(收获体会) 通过此次试验,熟悉掌握了线性表的逻辑结构特征和线性链表的特点,对于程序的调试和程序中错误的纠正有了更深一层的掌握,受益匪浅! 三、指导教师评语及成绩: 评语 评语等级 优 良 中 及格 不及格 1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强 2.实验方案设计合理 3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻) 4实验结论正确. 成绩: 指导教师签名: 批阅日期: 附录1: 源程序 #include #include #defineOK1 #defineERROR0 typedefintStatus; typedefintElemType; typedefstructLNode{ ElemTypedata; structLNode*next; }LNode,*LinkList; voidCreateList_L(LinkList&L,intn){ inti; LinkListp; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=n;i>0;--i){ p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=L->next;L->next=p; } } StatusGetElem_L(LinkListL,inti,ElemType&e){ LinkListp; intj; p=L->next;j=1; while(p&&j p=p->next;++j; } if(! p||j>i)returnERROR; e=p->data; returnOK; } StatusListInsert_L(LinkList&L,inti,ElemTypee){ LinkListp,s; intj; p=L;j=0; while(p->next&&j p=p->next;++j; } if(! p||j>i-1)returnERROR; s=(LinkList)malloc(sizeof(LNode)); s->data=e;s->next=p->next; p->next=s; returnOK; } StatusListDelete_L(LinkList&L,inti,ElemType&e){ LinkListp,q;intj; p=L;j=0; while(p->next&&j p=p->next;++j; } if(! (p->next)||j>i-1)returnERROR; q=p->next;p->next=q->next; e=q->data;free(q); returnOK; } voidmain() { LinkListL;inti;LinkListp; printf("请输入要建立的空表的节点数i="); scanf("%d",&i); printf("请输入数据: "); CreateList_L(L,i); for(p=L->next;p;p=p->next) printf("%d",p->data); printf("\n"); inte; printf("请输入要输出的节点数: "); scanf("%d",&i); GetElem_L(L,i,e); printf("%d",e);printf("\n"); printf("请输入要插入的节点数: "); scanf("%d%d",&i,&e); ListInsert_L(L,i,e); for(p=L->next;p;p=p->next) printf("%d",p->data); printf("\n"); printf("请输入要删除的节点数: "); scanf("%d",&i); ListDelete_L(L,i,e); printf("%d",e); printf("\n"); for(p=L->next;p;p=p->next) printf("%d",p->data); 附录2: 实验报告填写说明 1.实验项目名称: 要求与实验教学大纲一致。 2.实验目的: 目的要明确,要抓住重点,符合实验教学大纲要求。 3.实验原理: 简要说明本实验项目所涉及的理论知识。 4.实验环境: 实验用的软、硬件环境。 5.实验方案(思路、步骤和方法等): 这是实验报告极其重要的内容。 概括整个实验过程。 对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。 对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。 对于创新性实验,还应注明其创新点、特色。 6.实验过程(实验中涉及的记录、数据、分析): 写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。 7.实验结论(结果): 根据实验过程中得到的结果,做出结论。 8.实验小结: 本次实验心得体会、思考和建议。 9.指导教师评语及成绩: 指导教师依据学生的实际报告内容,给出本次实验报告的评价。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 doc