- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法与数据结构课件new.ppt
本章是学习后续章节 串,树,图,排序 的重要基础. 线性表的基本运算 查找 查找线性表的第i 0 i n-1 个结点 在线性表中查找值为x的结点 插入 把新结点插在线性表第i 0 i n-1 个位置上 把新结点插在值为x的结点的前面 后面 删除 在线性表中删除第i 0 i n-1 个结点 在线性表中删除值为x的结点 线性表的基本运算 统计线性表中结点的个数 打印线性表中所有结点 复制一份线性表 把一个线性表拆成几个线性表 把几个线性表合并成一个线性表 根据结点的某个字段值按升序 降序 重新排列线性表 顺序存贮的线性表 顺序存贮地址 线性表的插入 线性表的删除 用顺序存贮的线性表表示多项式 线性表的插入 长度为n的线性表变成长度为 n+1 的线性表 把新结点放进线性表前……. 把新结点放在第i个位置上…... 共移动 n-i 个结点…... 函数sq_insert 在具有n个结点的线性表list中,把值为x的结点插在第i个位置 若插入位置i不在可以插入的位置上,返回1 若n MAXSIZE,返回2 若插入成功,则返回0 线性表的删除 在具有n个结点的线性表中,删除第i个位置上的结点,使原来长度为n的线性表变成长度为 n-1 的线性表 把位置号为 i+1 到位置号为 n-1 结点都依次向前移动一个位置 共需移动 n-i-1 个结点 函数sq_delete 功能:在具有n个结点的线性表list中,删除第i个位置上的结点 若删除的结点不在可删除的位置上,返回1 删除成功,返回0 *P_N:在调用时,把存放线性表当前结点个数的变量N的地址赋给指针变量P_N,以实现删除后线性表的长度减少1 删除第i 0 i n 个位置上的结点概率为Pi P0+P1+P2+……+Pn-1 1 P0 P1 P2 …… Pn-1 1/n 删除第i个位置上的结点需移动 n-i-1 个结点. 删除一个结点,平均需要移动一半结点 顺序存贮的栈和队列 栈及其基本运算 队列及其基本运算 环形队列 双向队列 栈的应用 栈的存储结构:栈指针指向下一次进栈结点存放位置 实现:一维数组s[M] 进栈: 把结点送到TOP所指的数组元素中 TOP加1 IF TOP MAXN return 1 ; stack[TOP++] x; 出栈: TOP减1 把TOP现在所指的数组元素所存入的结点送到接受出栈结点的变量中 IF TOP 0 printf “ERROR” ; ELSE y stack[--TOP]; 栈的定义 假设栈的元素个数最大不超过整数m0,所有元素都具有同一数据类型ElemType,则可用下列方式来定义栈类型stack; typedef struct ElemType s[m0] ; int top ; stack; 入栈算法 栈指针指向最后一个进栈元素的存贮位置 栈空: TOP -1 栈满条件:TOP MAXN-1 栈空条件:TOP 0 进栈: 执行TOP加1 把进栈结点送到TOP当前所指的位置上 IF TOP MAXN-1 return 1 ; stack[++TOP] x; 出栈: 把TOP所指向的栈顶结点送到接受结点的变量中 执行TOP减1 IF TOP 0 return 1 ; y stack[TOP--]; 队列及其基本运算 队列是只允许在一端进行插入,且只允许在另一端进行删除的线性表 队首:允许删除的一端 队尾:允许插入的一端 进队:队列的插入 出队:队列的删除 队列及其基本运算 队列的特点:先进先出 FIFO 队列的表示: head头指针:指向队首结点在数组的存放位置 tail尾指针:指向队尾结点在数组的存放位置 用数组表示队列 头指针指向队首结点的存贮位置尾指针指向队尾结点的存贮位置 队空初态:head 0 tail -1 队满条件:tail MAXN-1 队列基本运算 头指针指向队首结点的存贮位置尾指针指向队尾结点的存贮位置 队空初态:head 0 tail -1 队满条件:tail MAXN-1 队空条件:head tail 进队: 执行tail加1 把新结点送到由tail所指的数组元素中 if tail MAXN-1 return 1 ; q[++tail] x; return 0 ; 出队: 把head所指的队首结点送到接受结点的变量中 执行head加1 if head tail return 1 ; *p_y q[head++]; return 0 ; 头指针指向存放队首结点的数组元素的前一个数组元素,尾指针指向存放队尾结点的数组元素 队空初态:head tail -1 队满条件:tail MAXN-1 队列基本运算 头指针指向存放队首结点的数组元素的前一个数组元素尾指针指
文档评论(0)