码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构4_链栈

时间:2014-05-20 08:45:15      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:style   class   c   code   ext   http   

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

#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();

}




数据结构4_链栈,布布扣,bubuko.com

数据结构4_链栈

标签:style   class   c   code   ext   http   

原文地址:http://www.cnblogs.com/zhuangwy-cv/p/3737825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!