1、Status ListInsert_Sq(SqList &L, int i, ElemType e) / 在顺序表L的第 i 个元素之前插入新的元素e if (i L.length+1) return ERROR;if (L.length = L.listsize) newbase = (ElemType *)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof (ElemType); if (!newbase) exit(OVERFLOW); L.elem = newbase; L.listsize += LISTINCREMENT; q = &
2、(L.elemi-1);for (p = &(L.elemL.length-1); p = q; -p) *(p+1) = *p; *q = e; +L.length; return OK; Status ListDelete_Sq (SqList &L, int i, ElemType &e) /删除算法if (i L.length) return ERROR;p = &e = *p;q = L.elem+L.length-1;for (+p; p +p) *(p-1) = *p; -L.length;int locate_sq(SqList L ,elemtype x) /查找算法 for
3、(i=0;iL.length;i+) If(L.elemi=x) return i+1; return 0;4根据上面设计的算法,用C/C+语言实现,调试通过并输出正确的结果。实验二 线性表的链式表示与实现(1) 掌握线性表的链接存储结构;(2) 验证单链表及其基本操作的实现;(3) 进一步掌握数据结构及算法的程序实现的基本方法。(1) 用头插法和尾插法建立含有若干个元素的带头结点的单链表;(2) 对已经建立的单链表实现插入、删除、查找等基本操作。3 实现算法实验三、四 栈与队列及其应用(1) 掌握栈的顺序存储结构和队列的链式存储结构;(2) 掌握栈和队列的操作特性;(3) 掌握基于顺序栈和链
4、队列的基本操作的实现方法。(1) 建立一个空栈;(2) 对已经建立的栈实现入栈、出栈、取栈顶元素等基本操作。(3) 建立一个空队列;(4) 对已经建立的队列实现插入、删除等基本操作实验五 二叉树的应用(1) 掌握二叉树的逻辑结构;(2) 掌握二叉树的二叉链表存储结构;(3) 掌握基于二叉链表存储的二叉树的遍历操作的实现。(1) 建立一棵含有n个结点的二叉树;(2) 前序(或中序、后序)遍历该二叉树; (3) 求该树叶子结点个数。实验六 图的遍历与应用(1) 掌握图的逻辑结构;(2) 掌握图的邻接矩阵存储结构和邻接表存储结构;(3) 掌握图的邻接矩阵存储结构和邻接表存储结构下遍历算法的实现。(1
5、) 建立无向图的邻接矩阵存储;(2) 对已经建立的无向图进行深度优先和广度优先遍历操作。 (3) 建立有向图的邻接表存储;(4) 对已经建立的有向图进行深度优先和广度优先遍历操作。 实验七 查找技术(1) 掌握顺序查找和折半查找算法的基本思想;(2) 掌握顺序查找和折半查找算法的实现方法;(3) 掌握顺序查找和折半查找算法的时间性能。 对给定的长度为n的数组,分别使用顺序查找、折半查找查找数组中与给定值k相等的元素。实验八 内部排序(1) 掌握直接插入排序、冒泡排序和简单选择排序的基本思想;(2) 掌握直接插入排序、冒泡排序和简单选择排序的实现方法;(3) 掌握快速排序的基本思想和实现方法。
6、对一组数据进行直接插入排序、冒泡排序、简单选择排序和快速排序。(升序)附录一:山东理工大学实验教学授课计划表附录二:实验一的源代码10 11 学年第 1 学期开课实验室名称计算机中心实验室课程名称数据结构课程代码052054开课时间2010.9总实验学时16课程类别主讲教师肖爱梅院(部)计算机科学与技术课程性质专业基础课开课班级计科09实验人数及实验者类别 本科序号实验项目名称学时实验类别要求类型实验计划时间(到周节)备注1线性表的顺序表示和实现 2专业必选设计第三周周二7-8节线性表的链式表示和实现第四周周二7-8节3栈的实现及其应用 第六周周六3-4节4队列的实现及其应用第八周周六3-4节
7、5二叉树及其应用 第十周周二7-8节6图及其应用 第十二周周二7-8节7查找技术 第十四周周二7-8节8内部排序第十五周周二7-8节9101112131415教学部主任: 院(部)分管领导:注:1本表由任课教师填写,课程所在院(部)统一于每学期第一周报送实验室,跨院部的另报实验室管理科一份。本表留存实验室;2实验类别:基础 /技术(或专业)基础/专业/其他(含毕业论文和毕业设计的实验);3实验类型:验证 /创新 /综合 /设计 /研究 /演示;4实验要求:必修 /选修;4备注:改进/新开 。4实验要求:必修 /选修。5备注:C语言实现:#include conio.hstdlib.h#defi
8、ne OK 1#define ERROR 0#define OVERFLOW 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int Status;typedef struct int *elem; int length; int listsize;SqList;int InitList_Sq(SqList *L) (*L).elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int); if(!(*L).elem) exit(OVERFLOW); (*L).length=0; (*L).lis
9、tsize=LIST_INIT_SIZE; return OK; /创建顺序表 int CreateList_Sq(SqList *L) int i; cout请输入数据:; for(i=0;(*L).length; scanf(%d,&(*L).elemi); /顺序表赋值 Status listinsert_sq(SqList *L,int i,int e) int *q,*p,*newbase; if(i(*L).length+1) return ERROR; if(*L).length=(*L).listsize) newbase=(int *)realloc(*L).elem,(*L
10、).listsize+LISTINCREMENT)* sizeof(int); if(! (*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; /顺序表的插入Status listdelete_sq(SqList *L,int i,int &e) int *p,*q;(*L).length) return ERROR; p=& e=*p; q=(*L).elem+(*L).length-1; for(+p;p+p) *(p-1)=*p; -(*L).length;/顺序表的删除 void output(SqList *L) cout
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1