考研论坛

 找回密码
 立即注册
查看: 715|回复: 0

2019考研数据结构C语言版详解答案:栈和队列(8)

[复制链接]

33万

主题

33万

帖子

100万

积分

论坛元老

Rank: 8Rank: 8

积分
1007237
发表于 2018-12-7 17:05:10 | 显示全部楼层 |阅读模式
《数据结构(C语言版)》考试内容两大类:概念,算法。自从计算机专业课统考以后,专业课考试题型分为2类,一类选择题,一类综合应用题。要想把数据结构这门专业课复习好,除了做练习题,还要掌握2019考研计算机数据结构(C语言版)基础知识,只有基础知识掌握牢固,才能在做数据结构算法题目时得心应手。本次新东方在线整理了数据结构C语言版答案详解,各位考生可以对照着题目与答案详解,把计算机专业课的数据结构复习一遍。
    3.15
假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个操作:初始化inistack(tws)、入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么有缺点。
    解:
    class DStack{
    ElemType *top[2];
    ElemType *p;
    int stacksize;
    int di;
    public:
    DStack(int m)
    {
    p=new ElemType[m];
    if(!p) exit(OVERFLOW);
    top[0]=p+m/2;
    top[1]=top[0];
    stacksize=m;
    }
    ~DStack(){delete p;}
    void Push(int i,ElemType x)
    {
    di=i;
    if(di==0){
    if(top[0]>=p) *top[0]--=x;
    else cerrtop[0]) return *top[1]--;
    else cerrnext;
    delete p;
    s.size--;
    }
    }
    void ClearStack(Stack &s)
    {
    LinkType p;
    while(s.top){
    p=s.top;
    s.top=p->next;
    delete p;
    s.size--;
    }
    }
    int StackLength(Stack s)
    {
    return s.size;
    }
    Status StackEmpty(Stack s)
    {
    if(s.size==0) return TRUE;
    else return FALSE;
    }
    Status GetTop(Stack s,ElemType &e)
    {
    if(!s.top) return ERROR;
    else{
    e=s.top->data;
    return OK;
    }
    }
    Status Push(Stack &s,ElemType e)
    {
    LinkType p;
    p=new NodeType;
    if(!p) exit(OVERFLOW);
    p->next=s.top;
    s.top=p;
    p->data=e;
    s.size++;
    return OK;
    }
    Status Pop(Stack &s,ElemType &e)
    {
    LinkType p;
    if(s.top){
    e=s.top->data;
    p=s.top;
    s.top=p->next;
    delete p;
    s.size--;
    }
    return OK;
    }
    // 从栈顶到栈底用Visit()函数遍历栈中每个数据元素
    void StackTraverse(Stack s,Status (*Visit)(ElemType e))
    {
    LinkType p;
    p=s.top;
    while(p) Visit(p->data);
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|新都网

GMT+8, 2024-11-19 19:44 , Processed in 0.070346 second(s), 7 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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