信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 7624|回复: 19
打印 上一主题 下一主题

数据结构之栈专题

  [复制链接]
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    跳转到指定楼层
    楼主
    发表于 2009-2-19 22:08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Stack)是限定仅在表尾进行插入或删除操作的线性表。表尾端称栈顶(top),表头端称栈底(bottom)。
    若有栈 S=s0s1,…,sn-1)则s0为栈底结点,sn-1为栈顶结点。通常称栈的结点插入为进栈,栈的结点删除为出栈。因为最后进栈的结点必定最先出栈,所以栈具有后进先出的特点。

    栈有两种存储结构:顺序栈和链栈
    顺序栈即栈的顺序存储结构是,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时设指针top指示栈顶元素的当前位置。
    栈也可以用链表实现,链式存储结构的栈简称链栈。若同时需两个以上的栈,则最好采用这种结构。对于栈上的操作,总结如下,大家可以仔细看一下这些程序,一个大的程序都是由一些对数据结构的小的操作组成的。
    顺序存储的栈的基本操作如下:
    判断栈满:
    int stackfull(seqstack *s)
    {


    return (s->top= =stacksize-1);

    }


    进栈:
    void
    push(seqstack *s,datatype
    x)

    {

    if (stackfull(s))

    error(“stack verflow”);

    s->data[++s->top]=x;

    }


    判断栈空:
    int stackempty(seqstack *s)
    {

    return (s->top= = -1);

    }


    出栈:
    datatype pop(seqstack *s)
    {
    if (stackempty(s))



    error(“stack underflow”);

    x=s->data[top];
    s->top--;
    return (x);
    }
    链接存储栈:用链表实现的栈,链表第一个元素是栈顶元素,链表的末尾是栈底节点,链表的头指针就是栈顶指针,栈顶指针为空则是空栈。若同时需要两个以上的栈,最好采用链表作存储结构。链接存储的栈的操作如下:


    进栈:
    Void push(linkstack *p,datatype x)

    {


    stacknode *q q=(stacknode*)malloc(sizeof(stacknode));


    q–>data=x;


    q–>next=p–>top;


    p–>top=q;

    }


    出栈:
    Datatype
    pop(linkstack
    *p)

    {

    datatype
    x;


    stacknode
    *q=p–>top;


    if(stackempty(p)


    error(“stack underflow.”);


    x=q–>data;


    p–>top=q–>next;


    free(q);


    return x;


    }



    多栈处理
    栈浮动技术:
    n 个栈共享一个数组空间V[m]
    n设立栈顶指针数组 t [n+1]
    栈底指针数组 b [n+1]tb分别指示第 i 个栈的栈顶与栈底,b[n]作为控制量,指到数组最高下标各栈初始分配空间 s = m/n指针初始值
    t[0] = b[0] = -1
    b[n] = m-1
    t = b = b[i-1] + s i = 1, 2, …, n-1
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享 顶 踩
  • TA的每日心情
    开心
    2016-1-25 08:52
  • 签到天数: 100 天

    [LV.6]常住居民II

    升级  0.04%

    沙发
    发表于 2011-7-5 05:36:59 | 只看该作者
    越办越好~~~~~~~~~`  
  • TA的每日心情
    郁闷
    2016-1-26 15:52
  • 签到天数: 53 天

    [LV.5]常住居民I

    升级  0.04%

    藤椅
    发表于 2011-7-6 15:04:48 | 只看该作者
    精神世界充实。  
  • TA的每日心情
    开心
    2015-8-14 08:20
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    升级  0.04%

    板凳
    发表于 2011-7-6 15:04:48 | 只看该作者
    呵呵,找个机会...  
  • TA的每日心情

    1312069281
  • 签到天数: 1 天

    升级  0.1%

    报纸
    发表于 2011-7-16 17:36:28 | 只看该作者
    好帖子,谢楼主
  • TA的每日心情

    2011-7-31 07:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    升级  0.1%

    地板
    发表于 2011-7-16 17:36:28 | 只看该作者
    支持一下吧  
  • TA的每日心情
    擦汗
    2011-8-26 15:01
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    升级  0.12%

    7
    发表于 2011-7-18 09:28:56 | 只看该作者
    不错哦,顶起  
  • TA的每日心情
    擦汗
    2011-7-16 08:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    升级  0.1%

    8
    发表于 2011-7-18 09:28:56 | 只看该作者
    顶你一下,好贴要顶!  
  • TA的每日心情
    擦汗
    2011-8-26 15:01
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    升级  0.12%

    9
    发表于 2011-7-18 09:28:56 | 只看该作者
    ding   支持  
  • TA的每日心情

    2011-7-31 07:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    升级  0.1%

    10
    发表于 2011-7-21 15:06:18 | 只看该作者
    先看看怎么样!  
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-5 04:36

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表