zoukankan      html  css  js  c++  java
  • 数据结构笔记1顺序栈

    #include<stdio.h> 
    #include<conio.h>
    #include<stdlib.h>
    #define MAX 100
    typedef struct{
     int data[MAX];
     int top;
    }Stack;
    Stack s;
    //初始化 成功1
    int InitStack(Stack s){
     s.top=-1;
     return 1;
    }
    //判空 非空1
    int StackEmpty(Stack s){
     if(-1==s.top)
      return 0;
     return 1;

    //判满 未满1 
    int StackFull(Stack s){
     if(MAX-1==s.top)
      return 0;
     return 1;
    }
    //求长度 成功1输出长度 
    int StackLength(Stack s){
     printf("长度为%d",s.top+1);
     return 1;

    //访问栈顶 返回1输出元素 
    int GetTop(Stack s,int *e){
     e=s.data;
     printf("栈顶元素为%d",*e);
     return 1;

    //入栈 成功1 
    int Push(Stack s,int e){
     ++s.top;
     s.data[s.top]=e;
     printf("入栈成功! ");
     return 0;

    //出栈 成功1 
    int Pop(Stack s,int *e){
     *e=s.data[s.top];
     s.top--;
     return 1;

    int main(){
     int i,E,*e1,*e2;
     Stack L;
     printf("现在开始进行站的操作! ");
     if(1!=InitStack(L)){
      printf("初始化失败,按任意键退出! ");
      getch();
      exit(0);
     }
     if(1!=StackEmpty(L)){
      printf("栈的空间为空! ");
      exit(0);
     }
     printf("是否进行入栈操作?1-是");
     scanf("%d",&i);
     if(1==i){
      loop:
       printf("请输入你要入栈的元素:");
       scanf("%d",&E);
       if(1!=StackFull(L)){
        printf("栈空间已满! "); 
        printf("是否进行出栈操作1或者访问栈顶操作2? ");
        printf("请输入你的选择:");
        scanf("%d",&i);
        if(i==1)
         goto pop;
        else if(i==2)
         goto gettop;
        else{
         printf("操作失败,按任意键退出! ");
         getch();
         exit(0);
        }
       }
       else{
        Push(L,E);
        printf("是否继续入栈?1-是"); 
        scanf("%d",&i);
        if(i==1)
         goto loop;
       }
     }
     else{
      printf("是否进行出栈操作1或者访问栈顶操作2? ");
      printf("请输入你的选择:");
      scanf("%d",&i);
      if(i==1)
       goto pop;
      else if(i==2)
       goto gettop;
      else{
       printf("操作失败,按任意键退出! ");
       getch();
       exit(0);
      }
     }
     pop:
      Pop(L,e1);
      printf("是否继续进行出栈操作?1是");
      scanf("%d",&i);
      if(1==i)
       goto pop;
     gettop:
      GetTop(L,e2);
     printf("顺序栈的操作已经结束!");
     return 0;
    }

  • 相关阅读:
    apue 第19章 伪终端
    apue 第18章 终端I/O
    linux IPC socket(2)
    linux IPC socket
    linux POSIX信号量
    【Luogu】【关卡2-16】线性动态规划(2017年10月)【还差三道题】
    【Luogu】【关卡2-15】动态规划的背包问题(2017年10月)【还差一道题】
    【Luogu】【关卡2-14】 树形数据结构(2017年10月)【AK】
    【Luogu】【关卡2-13】线性数据结构(2017年10月)【还差一道题】
    【Luogu】【关卡2-12】递推与递归二分(2017年10月)
  • 原文地址:https://www.cnblogs.com/100114jerro/p/4998729.html
Copyright © 2011-2022 走看看