链栈的基本操作

原创 2018年04月15日 08:56:31

初始化一个数据元素为整形的链栈,并实现进栈、出栈、获得栈顶元素等操作。

通过控制台将1,2,3,4,5进栈,出栈两次,获得栈顶元素并输出,6进栈,打印栈内的所有内容。

#include<iostream>
#include<cstdio>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
using namespace std;

typedef struct StackNode       //链栈的定义
{
    int data;
    struct StackNode *next;
}StackNode,*LinkStack;

int InitStack(LinkStack &S)     //初始化链栈,将栈顶指针置空
{
    S=0;
    return OK;
}

int Push(LinkStack &S, int e)   //入栈,注意此处e不是引用传递
{
    StackNode *p;
    p=new StackNode;
    p->data=e;
    p->next=S;           //将新结点插入栈顶
    S=p;                //修改栈顶指针为p
    return OK;
}

int Pop(LinkStack &S, int &e)   //出栈,此处e为引用传递
{
    StackNode *p;
    if(S==0) return ERROR;
    e=S->data;          //将栈顶元素赋给e
    p=S;                //用p临时保存栈顶,以待删除
    S=S->next;          //修改栈顶指针
    delete p;           //释放原栈顶的空间
    return OK;
}

int GetTop(LinkStack S)     //取栈顶元素
{
    if(S!=0) return S->data;
}

int main()
{
    StackNode *S;
    InitStack(S);
    int a,i,b;
    cout<<"入栈"<<endl;
    for(i=0;i<5;i++)
    {
        scanf("%d",&a);
        Push(S,a);
    }
    cout<<"出栈1位"<<endl;
    Pop(S,b);
    cout<<b<<endl;
    cout<<"再出栈1位"<<endl;
    Pop(S,b);
    cout<<b<<endl;
    cout<<"取当前栈顶元素"<<endl;
    cout<<GetTop(S)<<endl;
    Push(S,6);
    cout<<"剩余元素全部出栈"<<endl;
    while(Pop(S,b))
        cout<<b<<' ';

    return 0;
}






Linux应用与ubuntu基本操作

本课程是《曹国辉老师嵌入式研发精英培养计划》的第二部分课程,零基础系统讲解了嵌入式Linux开发所需要掌握的Linux应用相关知识,包括Ubuntu16.04 图形界面的基本操作,软件安装和卸载的方法,文件和目录管理,用户管理,进程管理,网络管理等常用命令的使用,系统讲解Shell脚本编程,Shell编程中变量、条件分支、循环,函数的使用等。为后续深入学习嵌入式系统开发打下坚实的基础。
  • 2017年06月21日 19:49

链栈的基本操作实现(c语言)

#include #include typedef int ElemType; typedef struct linknode { ElemType data; struct link...
  • lidekun9132
  • lidekun9132
  • 2016-10-12 18:37:04
  • 5358

【数据结构】链栈的基本操作

链栈的基本操作.cpp #include using namespace std; #define OK 1 #define ERROR 0 typedef int ElemType; type...
  • qq_32353771
  • qq_32353771
  • 2015-12-30 23:06:17
  • 2766

用C语言实现链栈的基本操作

用C语言实现链栈的基本操作
  • OnlyLove_KD
  • OnlyLove_KD
  • 2016-09-11 11:15:15
  • 4067

栈的基本操作(链栈)

#include #include #include #include #include using namespace std; typedef struct Node{ i...
  • wangwenhao00
  • wangwenhao00
  • 2012-10-16 19:35:34
  • 854

栈-链栈的基本操作及实现

链栈的存储结构可用单链表来实现,假设指针指向单链表的首结点,由于在栈中入栈河出栈操作只能在栈顶进行,不存在在单链表任意位置进行插入和删除操作的情况,所以在栈中不需要设置头结点直接将栈顶元素放在单链表的...
  • zlz18225318697
  • zlz18225318697
  • 2016-11-22 09:33:27
  • 678

数据结构之链式栈的一些基本操作

链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。...
  • believe_s
  • believe_s
  • 2017-07-31 22:57:18
  • 487

链栈的基本操作和实现

  • 2011年11月22日 19:29
  • 161KB
  • 下载

数据结构顺序栈和链栈基本操作----c++实现

顺序栈: #include using namespace std; #define MaxSize 50 class SeqStack{ private: int data[MaxSize]...
  • supersnow0622
  • supersnow0622
  • 2012-11-25 16:48:52
  • 4467

数据结构-链栈的基本操作

//链栈的基本操作 #include using namespace std; typedef char elemtype; typedef struct linknode { elemtype d...
  • weixin_38158043
  • weixin_38158043
  • 2017-11-09 15:48:02
  • 100
收藏助手
不良信息举报
您举报文章:链栈的基本操作
举报原因:
原因补充:

(最多只允许输入30个字)