用VC语言编写程序上机报告.doc_第1页
用VC语言编写程序上机报告.doc_第2页
用VC语言编写程序上机报告.doc_第3页
用VC语言编写程序上机报告.doc_第4页
用VC语言编写程序上机报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用VC语言编写程序上机报告题目:用VC语言编写程序,完成以下功能班级:061021 姓名:刘艳林 学号:06102022 完成日期:2011.05.11 地点:E-205楼一:需求分析用VC语言编写程序,完成以下功能 : 1 从键盘输入数据,用头插法建带头结点单链表 2 可在单链表的任意位置插入新结点 3 可删除单链表的任意一个结点 4 实现单链表的就地逆置 5 输出单链表 6 销毁建立的线性链表要求: 1 定义结点结构,程序模块清晰,有运行结果二:概要设计1.线性表的抽象数据类型定义:ADT List 数据对象:D=ai| aiElemSet,i=1,2,n,n 0 数据关系:R1=| ai-1 , aiD,i=2,n 基本运算(基本操作): InitList( &L ); 引用参数-回传 操作结果:构造一个空的线性表L DestroyList( &L ); 初始条件:线性表L已存在 操作结果:销毁线性表L ClearList( &L ); 初始条件:线性表L已存在 操作结果:将L重置为空表 ListEmpty( L ); 数值参数-不回传 初始条件:线性表L已存在 操作结果:如果L为空表,则返回True,否则返回FalseListLength(L); 初始条件:线性表L已存在 操作结果:返回L中数据元素的个数 GetElem(L,i,&e); 初始条件:线性表L已存在,1i ListLength(L) 操作结果:用e返回L中第i个数据元素的值 LocateElem( L, e, compare(); 初始条件:线性表L已存在,compare()是数据元素判定函数 操作结果:返回L中第一个与e满足关系compare()的数据元素 的位序。若这样的数据元素不存在,则返回值为0 PriorElem( L, cur_e, &pre_e ); 初始条件:线性表L已存在 操作结果:若cur_e是L的数据元素,且不是第一个,则 pre_e 返回它的前驱,否则操作失败, pre_e 无定义 NextElem( L, cur_e, &next_e ); 初始条件:线性表L已存在 操作结果:若cur_e是L的数据元素,且不是最后一个,则 next_e 返回它的后继,否则操作失败, next_e 无定义 ListInsert(&L,i,e); 初始条件:线性表L已存在,1 i ListLength(L)+1 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度+1 ListDelete(&L,i,&e); 初始条件:线性表L已存在且非空,1 i ListLength(L) 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度-1 ListTraverse( L, visit() ); 遍历线性表 初始条件:线性表L已存在 操作结果:依次对L的每个数据元素调用函数visit() 。一旦 visit() 失败,则操作失败 ADT List2.结点的实现:typedef struct LNode ElemType data; LNode *next;LNode, *LinkList;实现的预备定义:#include stdafx.h#include / malloc()等#include / floor(),ceil(),abs()#include / exit()/ 函数结果状态代码 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2 /因math.h中已定义OVERFLOW为3,故去掉此行typedef int Status; / Status是函数的类型,其值是函数结果状态码,如OK等typedef int Boolean; / Boolean是布尔类型,其值是TRUE或FALSEtypedef int ElemType; /链表数据元素类型定义三:主要算法(源代码附后)四:调试分析1.本次算法中涉及单链表的几个操作,有创建、输出、插入、删除、逆置。问题主要在于:(1).写出的就地逆置算法为不带头结点的,经过数次分析写出正确算法。(2).在输入算法程序的过程中出现一些输入上的错误,同时将部分符号的格式弄错,以至于在调试过程中出现较多错误。五:测试结果及分析此处写输入数据的分析,最好弄出结果的截图。六:实验过程中遇到的主要问题这次实验中遇到的一些问题:1.对于逆置算法的写出存在一些错误,开始时写出的算法是不带头结点的,后经过反复研究才写出带头结点的逆置算法。2.在输入程序的过程中,存在很大的粗心大意,从而导致在调试时出现很多错误;同时对于一些输入法格式造成的错误没有及时发现,以至于浪费了大量的时间和精力。七:实验小结通过本次上机,我受益匪浅,具体概括为如下几点:1. 对于一些比较经典的算法,应该在理解的基础上将其熟记于心,如此,方能在自己写程序之时,有所借鉴。2养成做事严谨,认真仔细的工作作风,不可粗心大意。例如在输入程序的过程中要将该写出的程序一字不漏,而不可输入一些错误的字符,因为一个错误就会导致没出息无法去运行所以输送程序过程必须严于律己,做到一丝不苟。3在这次上机过程中我还学会了一些输入程序时的技巧,并知道了输入法的格式会对算法产生影响,不同格式的同一符号都是错误,都会导致程序无法运行,所以平时在做程序时要注意细节,要认真。附源代码:#include stdafx.h#include malloc.htypedef int ElemType; typedef int Status;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1typedef struct LNode ElemType data; struct LNode *next;LNode, *LinkList;void CreateList_L(LinkList &L, int n) / / 逆位序(插在表头)输入n个元素,建立带头结点的单链线性表L LinkList p;int i;L=(LinkList)malloc(sizeof(LNode); L-next=NULL; / 先建立一个带头结点的单链表 for(i=n;i0;-i) p=(LinkList)malloc(sizeof(LNode); / 生成新结点 scanf(%d,&p-data); / 输入元素值 p-next=L-next; /插入到表头 L-next=p; / CreateList_LStatus ListInsert_L(LinkList &L,int i,ElemType e) LinkList p;LinkList s;int j; p=L;j=0;while (p&jnext;+j;if(!p|ji-1) return ERROR;s=(LinkList)malloc(sizeof (LNode); s-data=e;s-next=p-next;p-next=s;return OK;/ListInsert_LStatus ListDelete_L(LinkList &L,int i,ElemType e)LinkList p; LinkList q;int j;p=L;j=0;while(p-next&jnext;+j;if(!(p-next)|ji-1) return ERROR;q=p-next; p-next=q-next;e=q-data; free(q);return OK;/ListDelete_L Status ListTransfer_L(LinkList &L)LinkList p; LinkList s;LinkList t;p=L-next ;s=p-next;p-next=NULL;t=s-next;s-next=p;p=s; s=t; while(t) t=t-next; s-next=p;p=s; s=t;L-next=p;return OK;/ListTransfer_Lvoid DisplayList(LinkList L) LinkList p; p=L-next; while(p) printf(%4d,p-data); p=p-next; printf(n);void DestroyList(LinkList &L)LinkList q;while(L)q=L-next;free(L);L=q;int main(int argc, char* argv) LinkList Head; CreateLis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论