• 数据结构——链栈及其操作


     1 #include<iostream>
     2 using namespace std;
     3 
     4 typedef int Status;
     5 typedef int ElemType;
     6 #define OK 1
     7 #define ERROR 0
     8 
     9 
    10 //链栈的存储结构
    11 typedef struct StackNode
    12 {
    13     ElemType data;                //数据域
    14     struct StackNode *next;        //指针域
    15 }StackNode,*LinkStack;
    16 
    17 
    18 //初始化,构造一个空栈
    19 Status InitStack(LinkStack &S)
    20 {
    21     S = NULL;
    22     return OK;
    23 }
    24 
    25 
    26 //入栈
    27 //在栈顶插入元素e
    28 Status Push(LinkStack &S, ElemType e)
    29 {
    30     LinkStack p;            //生成新结点
    31     p = new StackNode;        
    32     p->data = e;
    33     p->next = S;            //将新结点插入栈顶
    34     S = p;                    //修改栈顶指针为p
    35     return OK;
    36 }
    37 
    38 
    39 //出栈
    40 //删除S的栈顶元素,用e返回其值
    41 Status Pop(LinkStack &S, ElemType &e)
    42 {
    43     LinkStack p;
    44     
    45     if (S == NULL)        //栈空
    46         return ERROR;
    47 
    48     e = S->data;    //将栈顶元素赋值给e
    49     p = S;            //用p临时保存栈顶元素空间,以备释放
    50     S = S->next;    //修改栈顶指针
    51     delete p;        //释放原栈顶元素的空间
    52     return OK;
    53 }
    54 
    55 
    56 //取栈顶元素
    57 ElemType GetTop(LinkStack S)
    58 {
    59     if (S != NULL)    //栈非空
    60         return S->data;        //返回栈顶元素的值,栈顶指针不变
    61     else
    62         return ERROR;
    63 }
    64 
    65 
    66 int main()
    67 {
    68     int n, x;
    69     LinkStack S;
    70 
    71     InitStack(S);
    72 
    73     cout << "请输入链栈的元素个数:" << endl;
    74     cin >> n;
    75 
    76     cout << "请依次输入" << n << "个元素:" << endl;
    77 
    78     while (n--)
    79     {
    80         cin >> x;
    81         Push(S, x);
    82     }
    83 
    84     cout << "元素依次出栈:" << endl;
    85     while (S != NULL)
    86     {
    87         cout << GetTop(S) << " ";
    88         Pop(S, x);
    89     }
    90 
    91     system("pause");
    92     return 0;
    93 }
  • 相关阅读:
    Office办公 如何设置WPS的默认背景大小
    百科知识 已知三角形三条边长,如何求解三角形的面积
    Office 如何添加Adobe Acrobat虚拟PDF打印机
    电脑技巧 如何保存网页为PDF
    JAVA Eclipse打开报错failed to load the jni shared library怎么办
    JAVA Eclipse如何导入已有的项目
    easy UI获取数据,打开毕弹窗
    easyUi 的DataGrid的绑定
    MVC异步分页
    MVC分页
  • 原文地址:https://www.cnblogs.com/friend-A/p/9073097.html
Copyright © 2020-2023  润新知