第2章 节 线性表数据结构课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 节 线性表数据结构课件.ppt

第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 ;线性结构的特点:;第2章 线性表;2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现;(a1, a2, … ai-1,ai, ai+1 ,…, an) ;算法2.1、2.2、2.7、2.12放在后面统一讲解;2.2  线性表的顺序表示和实现;元素n; #define LIST_INIT_SIZE 100 //最大长度 #define LISTINCREMENT 10 //分配增量 typedef struct { ElemType *elem; //指向数据元素的基地址 int length; //线性表的当前长度 int listsize; //当前分配的存储容量 }SqList;; malloc(m):开辟m字节长度的地址空间,并返回这段空间的首地址   sizeof(x):计算变量x的长度 free(p):释放指针p所指变量的存储空间,即彻底删除一个变量;new 类型名T(初值列表) 功能: 申请用于存放T类型对象的内存空间,并依初值列表赋以初值 结果值: 成功:T类型的指针,指向新分配的内存 失败:0(NULL);函数调用时传送给形参表的实参必须与形参在类型、个数、顺序上保持一致 参数传递有两种方式 传值方式(参数为整型、实型、字符型等) 传地址 参数为指针变量 参数为引用类型 参数为数组名;void main() {float a,b; cinab; swap(a,b); coutaendlbendl; };传地址方式--指针变量作参数;传地址方式--指针变量作参数;传地址方式--引用类型作参数;void main() {float a,b; cinab; swap(a,b); coutaendlbendl; };(1)传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化。 (2)引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而一般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本。因此,当参数传递的数据量较大时,用引用比用一般变量传递参数的时间和空间效率都好。;(3)指针参数虽然也能达到与使用引用的效果,但在被调函数中需要重复使用“*指针变量名”的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。;传地址方式--数组名作参数;#include iostream.h #define N 10 int max(int a[]); void main ( ) { int a[10]; int i,m; for(i=0;iN;i++) cina[i]; m=max(a); coutthe max number is:m; };练习:用数组作为函数的参数,将数组中n个整数按相反的顺序存放,要求输入和输出在主函数中完成;线性表的基本操作 1. 初始化线性表L InitList(L) 2. 销毁线性表L DestoryList(L) 3. 清空线性表L ClearList(L) 4. 求线性表L的长度 ListLength(L) 5. 判断线性表L是否为空 IsEmpty(L) 6. 获取线性表L中的某个数据元素内容 GetElem(L,i,e) 7. 检索值为e的数据元素 LocateELem(L,e) 8. 返回线性表L中e的直接前驱元素 PriorElem(L,e) 9. 返回线性表L中e的直接后继元素 NextElem(L,e) 10. 在线性表L中插入一个数据元素 ListInsert(L,i,e) 11. 删除线性表L中第i个数据元素 ListDelete(L,i,e);典型操作的算法实现;1. 初始化线性表L(参数用指针) int InitList(SqList *L) { L-elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //分配空间 if (L-elem==NULL) exit(OVERFLOW); //分配失败 L-length=0; //空表长度置0 return OK; //成功返回OK };2. 销毁线性表L void DestroyList(SqList L)

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档