zoukankan      html  css  js  c++  java
  • 数据结构4_链栈

    用指针方式实现栈,相对于顺序栈,指针方式不用指定栈的大小,
    先定义一个栈节点类,再定义一个链栈类,为使链栈类能访问栈节点的元素,设链栈类为栈节点类的友元类。

    #include<iostream>
    using namespace std;
    class LinkStack;
    class StackNode   //设计每个节点的类型
    {
        char *data;
        StackNode *next;
        friend class LinkStack;   //设置友元类,以便LinkStack类访问其元素
    };
    class LinkStack
    {
        StackNode *top;
    public:
        LinkStack()
        {
            top=NULL;
        }
        int stackempty()  //判断是否空栈
        {
            return top==NULL;
        }
        void push(char *e)//入栈
        {
            StackNode *q;
            q=new StackNode;
            q->data=new char(sizeof(e)+1);
            strcpy(q->data,e);
            q->next=top;   //q的下一个节点指向顶栈
            top=q;         //顶栈指针指向当前指针;西电用教材中c代码出错
        }
        void pop(char *&e)
        {
            StackNode *q=top;
            if(stackempty())
            {
                cout<<"stack underflow"<<endl;
                return;
            }
            e=new char(sizeof(q->data)+1);
            strcpy(e,q->data);
            top=q->next;
            delete q;
        }
        void show()    //栈的显示
        {
            StackNode *q=top;
            while(q!=NULL)
            {
                cout<<q->data<<endl;
                q=q->next;
            }
        }
    };

    void main()
    {
        LinkStack a;
        a.push("sb");
        a.push("test");
        a.push("stack");
        char *e;
        a.pop(e);
        cout<<"pop is:  "<<e<<endl;
        a.push("link");
        a.show();

    }




  • 相关阅读:
    点分治
    主席树
    可持久化并查集
    可持久化线段树
    网络流
    AC自动机
    线性基
    快速幂
    素数筛
    扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/zhuangwy-cv/p/3737825.html
Copyright © 2011-2022 走看看