顺序表地定义及基本操作.docVIP

  • 1
  • 0
  • 约8.49千字
  • 约 12页
  • 2018-08-31 发布于江苏
  • 举报
顺序表地定义及基本操作

PAGE PAGE 1 顺序表的定义及基本操作 一、实验目的、意义 (1)掌握线性表顺序存储结构的特点。 (2)熟练掌握顺序表的基本运算,理解用它们表示时插入与删除操作的算法。 (3)加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力 二、实验内容及要求 说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 建立顺序表,完成顺序表的基本操作:初始化、插入、删除、输出(遍历)、销毁, 置空表、求表长、查找元素、判线性表是否为空等。(参见教材19页) 实验提示: (1)定义顺序表:SqList,完成顺序表的基本操作,生成头文件SqList.h。 参考运行界面: 三、实验所涉及的知识点 数据结构、C语言语法函数、指针、数组、循环语句等。 四、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出。) 五、总结与体会 (调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。) 调试程序时,出现了许多错误。如:头结点的建立出错、忽略了创建释放节点,另外还有一些语法上的错误。单单排查错误就用满了实验课的时间,课上未完成。后来经过查阅教材,浏览网页等方式,才完成试验。这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。以后要都去练习、实践,完善自己的不足之处。 六、程序清单(包含注释) #include stdio.h #include malloc.h #include stdlib.h int temptag = 0; typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; } LinkList; void InitList(LinkList *L) //初始化链表 { L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L-next=NULL; printf(初始化链表成功!\n); } void DestroyList(LinkList *L) //销毁链表,也就是释放内存 { LinkList *p=L,*q=p-next; while (q!=NULL) { free(p); p=q; q=p-next; } free(p); } int ListLength(LinkList *L) //输出链表的长度 { LinkList *p=L;int i=0; while (p-next!=NULL) { i++; p=p-next; } return(i); } void DispList(LinkList *L) //显示链表的数据 { printf(链表中的数据如下:\n); LinkList *p=L-next; while (p!=NULL) { printf(%d ,p-data); p=p-next; } printf(\n); } int GetElem(LinkList *L,int i,ElemType e) //获取链表中的任意位置的元素。但是不能越界 { int j=1; LinkList *p=L-next; while (ji p!=NULL) { j++; p=p-next; } if (p==NULL) return 0; else { e=p-data; return 1; } } int ListInsert(LinkList *L,int i,ElemType e) //插入新的节点 { int j=0; LinkList *p=L,*s; while (ji-1 p!=NULL) { j++; p=p-next; } if (p==NULL) //未找到第i-1个结点 { printf(未找到第%d个节点!\n, (i-1)); return 0; } else //找到第i-1个结点*p { s=(LinkList *)malloc(sizeof(LinkList)); //创建新结点*s s-data=e; s-next=p-next; //将*s插入到*p之后 p-next=

文档评论(0)

1亿VIP精品文档

相关文档