《南昌大学实验1~8实验报告》由会员分享,可在线阅读,更多相关《南昌大学实验1~8实验报告(37页珍藏版)》请在金锄头文库上搜索。
1、实 验 报 告实验课程: 学生姓名: 学 号: 专业班级: 2013年 2 月 25 日目 录实验1 线性表3实验2 栈与队列4实验3 串5实验4 数组与广义表6实验5 二叉树的操作7实验6 图的操作8实验7 查找的操作9实验8 排序的操作10 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2013-4-12 实验成绩: 实验1 线性表一实验目的1 熟悉线性表抽象数据类型的表示和实现方法。2 掌握线性表上的基本操作。二实验基本原理IDE环境中进行C程序开发的基本过程三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系
2、统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 LISTINCREMENT 10typedef struct ElemType *elem;int leng
3、th;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.hstatus InitList_Sq(SqList *L)*L=(SqList*)malloc(sizeof(SqList);(*L).elem
4、=(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=(ElemType*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(Ele
5、mType);L-elem=newbase;L-listsize+=LISTINCREMENT;q=&(L-elemi-1);for (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=&(L-elemi);for (q=L-elem+L-length-1;plength-;return OK;int LocateElem(SqList *L, ElemTyp
6、e e)int i=0;while (ilength & L-elemi!=e) i+;if (i=L-length)return 0;elsereturn i+1;Main.c 文件代码为#include #include LinearList.hvoid printfElems(SqList *L)int i;for ( i = 0; i length; i+)printf(%d ,L-elemi);printf(n);void main()SqList *list;InitList_Sq(&list);/初始化顺序表ListInsert_Sq(list,1,10);/ 把10插入第一位置
7、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的位置链表代码为:LinkList.h#define OK 1#define ERROR 0#define TUR
8、E 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_LocateElem(LinkList L,ElemType e);LinkL
9、ist.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 (p&jnext;j+;if (!p|ji-1)return ERROR;s=(LinkList)malloc(sizeof(LNode);s-data=e;s-next=p-
10、next;p-next=s;return OK;status LinkListDelete(LinkList L,int i)LinkList q, p=L;int j=0;while (p&jnext;j+;if (!p|ji-1)return ERROR;q=p-next;p-next=q-next;free(q);return OK;int Link_LocateElem(LinkList L,ElemType e)int i=0;while (L&e!=L-data)L=L-next;i+;if (!L)return -1;elsereturn i;Main.c#include # i
11、nclude LinkList.hvoid printfElems_L(LinkList L)L=L-next;while (L)printf(%d ,L-data);L=L-next;printf(n);void main()LinkList head;InitLinkList(&head);/初始化链表LinkListInsert(head,1,10);/第一个位置插入 10LinkListInsert(head,1,9);/第一个位置 插入 9LinkListInsert(head,1,8);/第一个位置 插入 8LinkListInsert(head,1,7);/第一个位置 插入 7p
12、rintfElems_L(head); /打印所有的元素LinkListDelete(head,1);/删除第一个元素printfElems_L(head);/打印所有元素printf(第%d个元素是 10n,Link_LocateElem(head,10);/查找元素10的位置*/六思考讨论题或体会或对改进实验的建议总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。七参考资料数据结构习题集(C语言版) 严蔚敏 吴伟民 编著 清华大学出版社C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2013-4-12 实验成绩: 实验2 栈与队列一实验目的3 熟悉栈与队列抽象数据类型的表示和实现方法。4 掌握栈与队列的基本操作。二实验基本原