线性表-静态顺序表的实现.ppt
《线性表-静态顺序表的实现.ppt》由会员分享,可在线阅读,更多相关《线性表-静态顺序表的实现.ppt(28页珍藏版)》请在三一办公上搜索。
1、第二章 线性表-静态顺序表,提纲,1、从静态数组谈起2、静态顺序表的结构基于静态数组的顺序表3、静态顺序表的初始化操作4、静态顺序表的插入操作在表尾插入在表头插入在下标为i的位置插入,5、静态顺序表的删除操作删除表尾删除表头删除第i个位置的元素6、静态顺序表的遍历操作,1、从静态数组谈起,(1)静态数组的C或者C+定义 类型名 数组名常数或者常量;float elem1000;(2)一个题目:从键盘输入一系列整数,最后一个整数为9999,将这些数据存入到一个数组中。然后遍历数组,将所有数据输出到屏幕上。,1、从静态数组谈起,(2)一个题目:从键盘输入一系列整数,最后一个整数为9999,将这些数
2、据存入到一个数组中。然后遍历数组,将所有数据输出到屏幕上。分析:1)到底输入了多少个整数,在没有遇到9999之前都无法判断,所以只有使用一个比较大的静态数组。最坏情况是:一旦这个选定大小的静态数组不能满足需求,程序就得不出正确结果。我们假定定义一个大小为1000的整型数组;2)数组大小为1000,也许你输入的整数的个数少于1000个,那么如何记录你到底输入了多少个数据呢,可以用整型变量length来指示数据的个数,初值为0,每输入一个整数,只要它的值不是9999,就存入数组,然后,length+,(2)一个题目:从键盘输入一系列整数,最后一个整数为9999,将这些数据存入到一个数组中。然后遍历
3、数组,将所有数据输出到屏幕上。#include stdafx.h#includeusing namespace std;int main(int argc,char*argv)int elem1000;int length=0;,while(1)int x;cinx;if(x=9999)break;else elemlength=x;length+;for(int i=0;i=length-1;i+)coutelemi;coutendl;return 0;,(2)一个题目:从键盘输入一系列整数,最后一个整数为9999,将这些数据存入到一个数组中。然后遍历数组,将所有数据输出到屏幕上。#incl
4、ude stdafx.h#includeusing namespace std;int main(int argc,char*argv)int elem1000;int length=0;,while(1)int x;cinx;if(x=9999)break;else elemlength=x;length+;for(int i=0;i=length-1;i+)coutelemi;coutendl;return 0;,从这个例子可以看出,数组elem是和length成对出现的,二者其实是配合使用的。,#include stdafx.h#includeusing namespace std;in
5、t main(int argc,char*argv)int elem1000;int length=0;while(1)int x;cinx;if(x=9999)break;elseelemlength=x;length+;for(int i=0;i=length-1;i+)coutelemi;coutendl;return 0;,#include stdafx.h#includeusing namespace std;struct StaticListint elem1000;int length;int main(int argc,char*argv)StaticList SL;SL.le
6、ngth=0;while(1)int x;cinx;if(x=9999)break;elseSL.elemSL.length=x;SL.length+;for(int i=0;i=SL.length-1;i+)coutSL.elemi;coutendl;return 0;,我们称结构体:struct StaticListint elem1000;int length;为静态顺序表。现在要求写一个函数,int push_back(StaticList&L,int x)/功能是:在静态顺序表L的表尾插入一个元素x。如果插入失败返回-1,否则返回1.然后重新写刚才的程序。,#include stda
7、fx.h#includeusing namespace std;struct StaticListint elem1000;int length;int push_back(StaticList,int main(int argc,char*argv)StaticList SL;SL.length=0;while(1)int x;cinx;if(x=9999)break;elsepush_back(SL,x);for(int i=0;i=SL.length-1;i+)coutSL.elemi;coutendl;return 0;,#include stdafx.h#includeusing n
8、amespace std;struct StaticListint elem1000;int length;int push_back(StaticList,int main(int argc,char*argv)StaticList SL;SL.length=0;while(1)int x;cinx;if(x=9999)break;elsepush_back(SL,x);for(int i=0;i=SL.length-1;i+)coutSL.elemi;coutendl;return 0;,在程序中频繁地使用常数不是一种好的习惯,其缺点和频繁使用3.14而不是常量PI相似。因此我们的程序可以
9、再次改进,#include stdafx.h#includeusing namespace std;#define LISTSIZE 1000/注意#define语句后面不需要有分号“;”结尾struct StaticListint elemLISTSIZE;int length;int listsize;void InitList_StaticList(StaticList,void print(StaticList,#include stdafx.h#includeusing namespace std;#define LISTSIZE 1000/注意#define语句后面不需要有分号“;
10、”结尾struct StaticListint elemLISTSIZE;int length;int listsize;void InitList_StaticList(StaticList,void print(StaticList,代码量没有减少,但是程序的脉络却更加清晰了。这就是程序模块化的力量!,2、静态顺序表的结构基于静态数组的顺序表,1、从前面的例子可以看出,对静态数组适当包装(封装、改头换面),可以写成下面的形式:typedef int ElemType#define LISTSIZE 1000/注意#define语句后面不需要有分号“;”结尾struct StaticList
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 静态 顺序 实现
链接地址:https://www.31ppt.com/p-6598036.html