[工学]线性表.ppt

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

栈的基本① MAKENULL ( S )  操作  ② TOP ( S ) ③ POP ( S ) ④ PUSH ( x , S ) ⑤ EMPTY ( S ) 例2:利用栈实现行编辑处理。 设定符号“#”为擦讫符,用以删 除“#”前的字符;符号“@”为删 行符,用以删除当前编辑行。 原理: 一般字符进栈; 读字符 擦讫符退栈; 删行符则清栈 算法: Void LINEEDIT( ) { STACK S;  char c ; MAKENULL ( S ); c = getchar ( ) ; while ( c != ‘\n’ ) { if ( c == ‘#’ ) POP ( S ); else if ( c == ‘@’ ) MAKENULL ( S ); else PUSH ( c , S ); c = getchar( ); } 逆序输出栈中所有元素; } 2.3.1 栈的实现 1、顺序存储 顺序栈示意图 a1 a2 a3 ··· ai ··· an 0 1 2 3 ··· ··· maxlength-1 top 结构类型: typedef struct { elementtype data[maxlength]; int top ; } STACK ; STACK S ; 栈的容量:maxlength – 1 ; 栈空:S.top = 0 ; 栈满:S.top = maxlength – 1 ; 栈顶元素:S.data[ S.top ] ; 操作: ① Void MAKENULL( STACK S ) { S.top = 0 ; } ; ② Boolean EMPTY( STACK S ) { if ( S.top 1 ) return TRUE else return FALSE ; } ; ③ elementtype TOP( STACK S ) { if EMPTY( S ) return NULL; else return ( S.data[ S.top ] ); }; 操作: ④ elementtype POP( STACK S ) { if ( EMPTY (S ) ) error ( “栈空” ) ; else S.top = S.top – 1 ; } ; ⑤ Void PUSH ( elementtype x, STACK S ) { if ( S.top == maxlength - 1 ) error ( “栈满” ) ; else { S.top = S.top + 1 ; S.data[ S.top ] = x ; } } ; 2、链式存储 采用由指针形成的线性链表来实现栈 的存储,要考虑链表的哪一端实现元素的插 入和删除比较方便。 实现的方式如右图所示,其操作与线 性链表的表头插入和删除元素相同。 an an-1 a2 ······ a1 ∧ top 3、多个栈共用一个存储空间的讨论 STACK[ maxlength ] bot[1] top[1] bot[2] top[2] bot[3] top[3] top[2] bot[n] top[n] ··· ··· ··· ··· 0 Maxlength-1 bot[n+1] bot[i] top[i] Int Is_Stack_i_Full ( STACK

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档