1、1-37实 验 报 告实验课程: 学生姓名: 学 号: 专业班级: 2013 年 2 月 25 日2-37目 录实验 1 线性表 .3实验 2 栈与队列 .4实验 3 串 .5实验 4 数组与广义表 .6实验 5 二叉树的操作 .7实验 6 图的操作 .8实验 7 查找的操作 .9实验 8 排序的操作 .103-37南 昌 大 学 实 验 报 告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2013-4-12 实验成绩: 实验 1 线性表一实验目的1 熟悉线性表抽象数据类型的表示和实现方法。2 掌握线性表上的基本操作。二实验基本原理IDE 环境中进行 C 程
2、序开发的基本过程三主要仪器设备及耗材PC 微型计算机系统DOS 操作系统或 Windows 操作系统Turbo C 集成开发环境、 Visual C+ 开发环境、或其它 C 语言开发环境。四实验步骤1 进入所选择的 IDE 环境。2 书写程序源代码。3 调试程序。4 验证程序。5实验项目顺序表代码:linearList.h 文件内代码为#define OK 1#define ERROR 0#define TURE 1#define FALSE 0typedef int status ;typedef int ElemType;#define LIST_INIT_SIZE 100#define
3、LISTINCREMENT 104-37typedef struct ElemType *elem;int length;int listsize;SqList;status InitList_Sq(SqList *L);status ListInsert_Sq(SqList *L,int i,ElemType e);status ListDelete_Sq(SqList *L,int i);int LocateElem(SqList *L, ElemType e);LinearList.c 文件内部代码# include # include “LinearList.h“status Init
4、List_Sq(SqList *L)*L=(SqList*)malloc(sizeof(SqList);(*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);(*L).length=0;(*L).listsize=LIST_INIT_SIZE;return OK;status ListInsert_Sq(SqList *L,int i,ElemType e)ElemType *newbase,*p,*q;if (iL-length+1)return ERROR;if (L-length=L-listsize)newbase=(E
5、lemType*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(ElemType);L-elem=newbase;L-listsize+=LISTINCREMENT;q=5-37for (p=L-elem+L-length-1;p=q; p-)*(p+1)=*p;*q=e;L-length+;return OK;status ListDelete_Sq(SqList *L,int i)ElemType *q,*p;if (iL-length)return ERROR;p=for (q=L-elem+L-length-1;plength-;re
6、turn OK;int LocateElem(SqList *L, ElemType e)int i=0;while (ilength if (i=L-length)return 0;elsereturn i+1;Main.c 文件代码为#include #include “LinearList.h“void printfElems(SqList *L)6-37int i;for ( i = 0; i length; i+)printf(“%d “,L-elemi);printf(“n“);void main()SqList *list;InitList_Sq(/初始化顺序表ListInser
7、t_Sq(list,1,10);/ 把10插入第一位置ListInsert_Sq(list,1,9);/ 把9插入第一位置ListInsert_Sq(list,1,8);/ 把8插入第一位置ListInsert_Sq(list,1,7);/ 把7插入第一位置printfElems(list); /打印出所有元素ListDelete_Sq(list,1);/删除printf(“删除第一个之后n“);printfElems(list); /打印出所有元素printf(“第%d个元素是 10“,LocateElem(list,10);/查找元素10的位置7-37链表代码为:LinkList.h#de
8、fine OK 1#define ERROR 0#define TURE 1#define FALSE 0typedef int status ;typedef int ElemType;typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;status InitLinkList(LinkList* L);status LinkListInsert(LinkList L,int i,ElemType e);status LinkListDelete(LinkList L,int i);int Link_Loca
9、teElem(LinkList L,ElemType e);8-37LinkList.c#include “LinkList.h“#include #include status InitLinkList(LinkList* L)*L=(LinkList)malloc(sizeof(LNode);(*L)-next=NULL;return OK;status LinkListInsert(LinkList L,int i,ElemType e)LinkList s,p=L;int j=0;while (pj+;if (!p|ji-1)return ERROR;s=(LinkList)mallo
10、c(sizeof(LNode);s-data=e;s-next=p-next;p-next=s;return OK;status LinkListDelete(LinkList L,int i)LinkList q, p=L;int j=0;while (pj+;if (!p|ji-1)return ERROR;9-37q=p-next;p-next=q-next;free(q);return OK;int Link_LocateElem(LinkList L,ElemType e)int i=0;while (Li+;if (!L)return -1;elsereturn i;Main.c#
11、include # include “LinkList.h“void printfElems_L(LinkList L)L=L-next;while (L)printf(“%d “,L-data);L=L-next;printf(“n“);void main()LinkList head;10-37InitLinkList(/初始化链表LinkListInsert(head,1,10);/第一个位置插入 10LinkListInsert(head,1,9);/第一个位置 插入 9LinkListInsert(head,1,8);/第一个位置 插入 8LinkListInsert(head,1,7);/第一个位置 插入 7printfElems_L(head); /打印所有的元素LinkListDelete(head,1);/删除第一个元素printfElems_L(head);/打印所有元素printf(“第%d个元素是 10n“,Link_LocateElem(head,10);/查找元素10的位置*/六思考讨论题或体会或对改进实验的建议总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。七参考资料数据结构习题集(C 语言版) 严蔚敏 吴伟民 编著 清华大学出版社C 程序设计题解与上机指导 (第三版) 谭浩强编著 清华大学出版社