美文网首页
链表的方式实现栈

链表的方式实现栈

作者: wildsre | 来源:发表于2016-09-19 21:06 被阅读0次
  • 栈的定义:只能在表的一端进行插入和删除元算的线性表,后进先出的规则,凡是在逻辑上需要“后进先出”的操作和过程都能用上栈。一些具体应用有:函数的求值,过程的调用与返回,递归过程的实现
  • 栈的基本运算:入栈(插入)、出栈(删除)、置栈空、判断是否为空、取栈顶元素
//stack chain storage structure
#include<iostream>
using namespace std;

class stack_chain;

class node{
public:
    friend class stack_chain;
private:
    char  _data;
    node* _next;
};

class stack_chain{
public:
    stack_chain(){_top=0;}
    ~stack_chain();     //release memory
    bool push(char& c); //push c into stack
    bool pop();  //remove an element from stack
    bool get_top(char& c); //get top element
    void clear();        //clear stack
    void display();
    
private:
    node* _top;
    int   _length;
};

stack_chain::~stack_chain(){
    clear();
}

bool stack_chain::push(char& c){
    node* tmp = new node;
    tmp->_data = c;
    tmp->_next=_top;
    _top= tmp;
    _length++;
    return true;
}

bool stack_chain::pop(){
    if(_top==0) return false;
    node* tmp=_top; 
    _top=tmp->_next;
    delete tmp;
    _length--;
    return true;
}

bool stack_chain::get_top(char& c){
    if(_top==0) return false;
    c=_top->_data;
    return true;
}

void stack_chain::clear(){
    node* tmp;
    while(_top!=0){
        tmp=_top;
        _top=_top->_next;;
        delete tmp;
    }
} 

void stack_chain::display(){
    node* tmp=_top->_next;
    while(tmp!=0){
        cout << tmp->_data;
        tmp= tmp->_next;
    }
    cout << endl;
}

int main(){
    char str[]="stack chain test...";
    stack_chain link;
    for(int i=0; str[i]!=0; i++) link.push(str[i]);
    link.display();
    link.pop();
    char t;
    link.get_top(t);
    cout << t << endl;
    link.clear();
    return 0;
}

相关文章

  • 基础算法学习与实践

    数组&链表 1. 快慢指针的方式实现判断链表是否有环 栈和队列 1. 栈实现队列(负负得正) ...

  • 链表的方式实现栈

    栈的定义:只能在表的一端进行插入和删除元算的线性表,后进先出的规则,凡是在逻辑上需要“后进先出”的操作和过程都能用...

  • 数据结构java描述

    接口 栈 队列 集合 并查集 映射 数组 链表 栈 数组实现 链表实现 队列 数组实现 链表实现 二分搜索树 集合...

  • 链表实现栈(LIFO)、队列(FIFO)

    今天来用链表实现栈 栈可以用链表实现,压栈操作即在链表头赋值,弹栈只需要将链表头元素指向下一个即可 由此可见,链表...

  • 单链表实现栈(C语言)

    单链表实现栈

  • C语言之栈的实现

    以数组的方式创建栈 以链表的方式创建栈

  • 关于栈的基础知识介绍

    一、存储结构 栈是一种线性结构:先进后出,可用数组与链表两种方式来实现。 1.数组栈 用数组来实现栈(此处用int...

  • 数据结构基础--链式栈

    链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不...

  • 数据结构-系列文章

    线性表 单链表 单链表-OC实现 双链表 循环链表 栈 栈 队列 待完善 数组 待完善 树 待完善 图 待完善 哈...

  • 2018-07-09顺序表实现栈

    栈的实现 ——直接用顺序表(列表list)进行 栈结构实现 栈可以用顺序表实现,也可以用链表实现。 栈的操作 St...

网友评论

      本文标题:链表的方式实现栈

      本文链接:https://www.haomeiwen.com/subject/oqmnettx.html