- 2
- 0
- 约6.55千字
- 约 30页
- 2018-03-27 发布于江西
- 举报
数据结构课件 (特详细).ppt
要求 有三个人要被关进监狱三年,监狱长给他们三个一人一个要求。 美国人爱抽雪茄,要了三箱雪茄。 法国人最浪漫,要一个美丽的女子相伴。 而犹太人说,他要一部与外界沟通的电话。 三年过后,第一个冲出来的是美国人,嘴里鼻孔里塞满了雪茄,大喊道:“给我火,给我火!”原来他忘了要火了。 接着出来的是法国人。只见他手里抱着一个小孩子,美丽女子手里牵着一个小孩子,肚子里还怀着第三个。 最后出来的是犹太人,他紧紧握住监狱长的手说:“这三年来我每天与外界联系,我的生意不但没有停顿,反而增长了200%,为了表示感谢,我送你一辆劳施莱斯!” 这个故事告诉我们,什么样的选择决定什么样的生活。今天的生活是由三年前我们的选择决定的,而今天我们的抉择将决定我们三年后的生活。我们要选择接触最新的信息,了解最新的趋势,从而更好的创造自己的将来。 课堂讨论: 顺序表各种操作算法的“通式” 该如何书写? ———采用抽象数据类型来表示 动态数组简介 先为顺序表空间设定一个初始分配量,一旦因插入元素而空间不足时,可为顺序表增加一个固定长度的空间增量。 第2章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 应用举例 2.3 线性表的链式表示和实现 2.3.1 链表的表示 例:请画出26 个英文字母表的链式存储结构。 4)头指针、头结点和首元结点的区别 (3)举例 例1: 例2: sizeof(x)——计算x的长度 malloc(m) —开m字节空间 free(p) ——删除一个变量 附2: 补充结构数据类型的C表示法 2.3.2 链表的实现 (1) 单链表的建立和输出 (2) 单链表的修改 (3) 单链表的插入 (4) 单链表的删除 (1) 单链表的建立和输出 例:用单链表结构来存放26个英文字母组成的线性表(a,b,c,…,z),请写出C语言程序。 * * 第1章 绪论 第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 第6章 树和二叉树 第7章 图 第9章 查找 第10章 排序 目 录 顺序表的存储结构是一维数组,如果插入的元素个数超过数组定义的长度怎么办? ———采用动态分配的一维数组 #define LIST_INIT_SIZE 100 //存储空间的初始分配量 #define LISTINCREMENT 10//存储空间的分配增量 Typedef struct{ ElemType *elem; //表基址(用指针*elem表示) int length; //表长度(表中有多少个元素) int listsize; //当前分配的表尺寸(字节单位) }SqList; 注:三个分量可简写为:L.elem L.length L.listsize 存储结构描述如下(见教材P22): sizeof(x)算符的意思是:计算变量x的长度(字节数) malloc (m)函数的意思是:新开一片大小为m字节的连续空间,并把该区首址作为函数值。 Status InitList_Sq( SqList L ) //创建一个空线性表 { L.elem=(ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType)); If(!L.elem) exit(OVERFLOW); //分配失败,结束程序 L.length=0; //暂无元素放入,空表 L.listsize=LIST_INIT_SIZE; //表尺寸=初始分配量 Return OK; } //InitList_Sq 动态创建一个空顺序表的算法: realloc (*p, newsize)函数的意思是:新开一片大小为newsize的连续空间,并把以*p为首址的原空间数据都拷贝进去。 动态顺序表的插入算法 Status ListInsert_Sq(SqList L, int i, ElemType e) { //在顺序线性表中第i个位置之前插入新的元素e if( i 1 or i L.length+1) return ERROR; // 检验i 值的合法性 if ( L.length ≥ L.listsize ) /
原创力文档

文档评论(0)