1、 *大学 数据结构与算法分析课程设计 题 目:数据结构上机试题 学生姓名: 学 号: 专 业:信息管理与信息系统 班 级: 指导教师: 2014 年 04 月 数据结构与算法分析课程设计 1 目录 一、顺序表的操作 2 【插入操作原理】. 2 【删除操作原理】. 2 【NO.1 代码】. 3 【运行截图演示】. 7 二、单链表的操作 10 【创建操作原理】. 10 【插入操作原理】. 10 【删除操作原理】. 10 【NO.2 代码】11 【运行截图演示】. 20 三、顺序栈的操作 25 【数值转换原理】. 25 【NO.3 代码】. 26 【运行截图演示】. 30 四、查找算法 32 【顺序
2、查找原理】. 32 【折半查找原理】. 32 【NO.4 代码】. 33 【运行截图演示】. 38 五、排序算法 40 【直接插入排序原理】 40 【快速排序原理】. 40 【NO.5 代码】. 41 【运行截图演示】. 46 数据结构与算法分析课程设计 2 一、一、顺序表的操作顺序表的操作 (1)插入元素操作:将新元素 x 插入到顺序表 a 中第 i 个位置; (2)删除元素操作:删除顺序表 a 中第 i 个元素。 【插入操作原理】【插入操作原理】 线性表的插入操作是指在线性表的第i-1个数据元素和第i个数 据元素之间插入一个新的数据元素,就是要是长度为 n 的线性表: 11 , iin a
3、aaa 变成长度为 n+1 的线性表: 11 , iin aab aa 数据元素 1i a 和i a 之间的逻辑关系发生了变化。 (其【插入原理】在课本 P23 的算法 2.3 有解释) 【删除操作原理】【删除操作原理】 反之,线性表的删除操作是使长度为 n 的线性表: 111 , iiin aaaaa 变成长度为 n-1 的线性表: 111 , iin aaaa 数据元素 1i a 、i a 和 1i a 之间的逻辑关系发生变化,为了在存储 结构上放映这个变化,同样需要移动元素。 (其【删除原理】在课本 P24 的算法 2.4 有解释) 数据结构与算法分析课程设计 3 【NO.1NO.1 代
4、码】代码】 #include #define MAX 100 typedef int datatype; typedef struct datatype dataMAX; int list; sequenlist; /*顺序表*/ int main() int insert( sequenlist *L, int x, int i ); int deletee( sequenlist *L, int i ); int input( sequenlist *L ); int output( sequenlist *L ); sequenlist s,*p= int indata,inlocate
5、,deletedx; input(p); printf( “请输入要插入的数:“ ); scanf( “%d“, printf( “请输入要插入的位置:“ ); 数据结构与算法分析课程设计 4 scanf( “%d“, insert( p,indata,inlocate ); printf( “插入后的数据:“ ); output(p); printf( “请输入要删除的位置:“ ); scanf( “%d“, deletee( p, deletedx ); printf( “删除后的数据:“ ); output(p); return 0; int output( sequenlist *L
6、) int i; for( i=0; ilist; i+ ) printf( “%d “,L-datai ); printf( “nn“ ); return(1); int input( sequenlist *L ) int i; 数据结构与算法分析课程设计 5 printf( “请输入原始数据个数:“ ); scanf( “%d“, L-list-; printf( “请输入原始数据:“ ); for( i=0; i list; i+ ) scanf( “%d“, printf( “原始数据为:“ ); output(L); return (1); int insert( sequenlist *L, int x, int i ) int j; if ( ( (*L).list )=M