• 【数据结构】栈 的 顺序表示


     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 typedef struct SqStack {
     5     int *base;
     6     int *top;
     7     int stacksize;
     8 }SqStack; 
     9 
    10 //创建顺序栈 
    11 SqStack InitStack() {   
    12     SqStack S;
    13     S.base = (int*)malloc(10*sizeof(int));
    14     if(!S.base)
    15     exit(0);
    16     S.top = S.base;
    17     S.stacksize = 10 ;
    18     return S;
    19 }
    20 
    21 //设置为空栈 
    22 int ClearStack(SqStack &S) {
    23     S.top = S.base;
    24     return 0;
    25 }
    26 
    27 //将元素入栈 
    28 int Push(SqStack &S , int e) {
    29     
    30     if(S.top - S.base >= S.stacksize)
    31     {
    32         S.base = (int *)realloc(S.base , (S.stacksize + S.stacksize/2)*sizeof(int));
    33         if(!S.base)
    34         exit(0);
    35         S.top = S.base + S.stacksize ;
    36         S.stacksize += S.stacksize/2 ;
    37     }
    38     *S.top++ = e;
    39 }
    40 
    41 //弹出栈顶元素 
    42 int Pop(SqStack &S) {
    43     if(S.base == S.top)
    44     return 0;
    45     return *--S.top;
    46 }
    47 
    48 //取出栈顶元素 
    49 int GetTop(SqStack &S) {
    50     if(S.base == S.top)
    51     return 0;
    52     return *(S.top-1);
    53 }
    54 
    55 //将栈内元素倒置 
    56 void StackTraverse(SqStack &S) {
    57     SqStack S1 = InitStack();
    58     while(S.base != S.top) 
    59         Push(S1 , Pop(S));
    60     S = S1 ;
    61 }
    62 
    63 //输出所有元素 
    64 int PrintfStack(SqStack &S) {
    65     for( ; ; ) {
    66         if(S.base == S.top)
    67         return 0;
    68         printf("%d" , Pop(S));
    69     }
    70 }
    71 int main() {
    72     SqStack S ;
    73     S = InitStack();
    74     int  n = 0 ;
    75     for(int i = 0 ; i < 2 ; i++)
    76     {
    77         scanf("%d" , &n);
    78         Push(S , n);
    79     }
    80     StackTraverse(S);
    81     PrintfStack(S);
    82 }
  • 相关阅读:
    hdu 4333 扩展kmp
    扩展KMP
    hdu 1026 bfs+记录路径
    2015-04-26 校赛总结
    hdu 1514 记忆化搜索
    hdu 1208 记忆化搜索
    hdu 2266 dfs
    hdu 1518 dfs+剪枝
    android:layout_gravity和android:gravity的区别
    深圳市住房公积金提取办法
  • 原文地址:https://www.cnblogs.com/duolaAbao/p/9430770.html
Copyright © 2020-2023  润新知