• 3.栈的实现


    1.stack.h

     1 #include <stdlib.h>
     2 #include <stdio.h>
     3 
     4 #define N 100
     5 
     6 struct stack
     7 {
     8     int data[N];
     9     int top;//标识栈顶
    10 };
    11 
    12 typedef struct stack Stack;//stack别名
    13 
    14 void init(Stack *p);//初始化
    15 int isempty(Stack *p);//判断栈是否空
    16 int isfull(Stack *p);//判断栈溢出
    17 int gettop(Stack *p);//获取栈顶
    18 void push(Stack *p, int key);//插入数据
    19 void pop(Stack *p);//弹出一个数据
    20 void show(Stack *p);//显示出来

    2.stack.c

     1 #include "stack.h"
     2 
     3 void init(Stack *p)
     4 {
     5     p->top = -1;//代表为空
     6     memset(p->data, 0, sizeof(int)*N);//数据清零
     7 }
     8 
     9 int isempty(Stack *p)
    10 {
    11     if (p->top == -1)
    12     {
    13         return 1;//1为空
    14     }
    15     else
    16     {
    17         return 0;//0不为空
    18     }
    19 }
    20 
    21 int isfull(Stack *p)
    22 {
    23     if (p->top == N - 1)
    24     {
    25         return 1;//溢出
    26     }
    27     else
    28     {
    29         return 0;//没满
    30     }
    31 }
    32 
    33 int gettop(Stack *p)
    34 {
    35     return p->data[p->top];//获取栈顶
    36 }
    37 
    38 void push(Stack *p, int key)
    39 {
    40     if (isfull(p) == 1)
    41     {
    42         return;
    43     }
    44     else
    45     {
    46         p->top += 1;
    47         p->data[p->top] = key;
    48     }
    49 }
    50 
    51 
    52 void pop(Stack *p)
    53 {
    54     if (isempty(p) == 1)
    55     {
    56         return;
    57     }
    58     else
    59     {
    60         p->top -= 1;
    61     }
    62 }
    63 
    64 void show(Stack *p)
    65 {
    66     if (isempty(p) == 1)
    67     {
    68         return;
    69     }
    70     else
    71     {
    72         printf("
    栈的数据是:
    ");
    73         for (int i = 0; i <= p->top; i++)
    74         {
    75             printf("%4d", p->data[i]);//打印栈的数据
    76         }
    77         printf("
    ");
    78     }
    79 }

    main.c

     1 #include "stack.h"
     2 
     3 void main()
     4 {
     5     int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
     6 
     7     Stack mystack;
     8 
     9     init(&mystack);
    10     
    11     for (int i = 0; i < 10; i++)
    12     {
    13         push(&mystack, a[i]);
    14     }
    15     while (!isempty(&mystack))
    16     {
    17         printf("%d", gettop(&mystack));
    18         pop(&mystack);
    19     }
    20 
    21     system("pause");
    22 }
  • 相关阅读:
    对WEB标准以及W3C的理解与认识
    px和em的区别
    数组去重的方法
    什么是CSS Hack?
    在网页中应该使用奇数还是偶数的字体大小?为什么?
    ajax的封装过程
    WebService简介及使用
    SQL 不能插入重复键-错误 主键列是自动增长
    SqlServer语句执行
    正则表达式
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8282581.html
Copyright © 2020-2023  润新知