zoukankan      html  css  js  c++  java
  • 循序栈

    #include<stdio.h>
    #include<stdlib.h>
    #define stack_initSize 100
    #define stack_incrementSize 10
    typedef struct{
     int * stackdata;
     int top;
     int stacksize;
    }seqStack;
    void InitStack(seqStack *S){//初始化栈

     if(!S)  {printf("顺序栈无效 "); return;}
      S->stackdata=(int *)malloc(stack_initSize*sizeof(int));
         S->top=0;
      S->stacksize=stack_initSize;
         }


     void InStack(seqStack * S,int e){//进栈
      int * newstack;
      if(!S)  {printf("顺序栈无效 "); return;}
       if(S->top==S->stacksize){
         newstack=(int*)realloc(S->stackdata,(S->stacksize+stack_incrementSize)*sizeof(int));
         if(!newstack) { printf("内存分配错误 ");return;}
         S->stackdata=newstack;
         S->stacksize=S->stacksize+stack_incrementSize;
       }
       S->stackdata[S->top++]=e;
     }                                                                                                                                                                                                                                                                                                                                          

     void OutStack(seqStack *S){//出栈
        int e;
           if(!S)  {printf("顺序栈无效 "); return;}
        if(S->top==0) {printf("栈为空 "); return;}
        e=S->stackdata[--S->top];
        printf("%d",e);
    }
       
       
       
     void TraversalStack(seqStack * S){//遍历栈
             int i;
          for(i=0;i<S->top;i++){
         
           printf("%d ",S->stackdata[i]);
         
          }
          printf(" ");
       
        }
     void LengthStack(seqStack *S){//栈长
      printf("栈的长度为%d ",S->top);
     
     }
        void IsEmpty(seqStack *S){//判断是否为空
      if(!S)  {printf("顺序栈无效 "); return;}
         if(S->top==0) printf("栈为空 ");
      else
       printf("栈不为空 ");
    }


      int main(void){
       seqStack *S=(seqStack*)malloc(sizeof(seqStack));
       int i,x,z;
       int y=1;
       while(y){
           printf("*********************** ");
        printf("--1.初始化栈-- ");
        printf("--2.进栈-- ");
        printf("--3.出栈-- ");
        printf("--4.遍历栈-- ");
        printf("--5.求栈长-- ");
           printf("--6.栈是否为空-- ");
        printf("--7.进制转换-- ");
        printf("--8.退出-- ");
                    printf("--请选择你要进行的操作-- ");
        scanf("%d",&i);
        switch(i){
        
        case 1:InitStack(S);printf("栈已经初始化 ");break;
        case 2: printf("请输入你要进栈的元素 ");scanf("%d",&x);InStack(S,x);printf("%d已经进栈 ",x);break;
        case 3: OutStack(S); printf(" 已经出栈 ");break;
        case 4: TraversalStack(S);break;
        case 5: LengthStack(S);break;
        case 6: IsEmpty(S);break;
        case 7:
         printf("请输入你要转换的10进制数: ");
             scanf("%d",&z);
          InitStack(S);
          while(z){
          InStack(S,z%2);
          z=z/2;
          }
          printf("转换结果为: ");
          while(S->top!=0){
          OutStack(S);
          }
          printf(" ");

         break;
        case 8: y=0;printf("已退出 ");break;

       }
       }

      return 0;  

  • 相关阅读:
    【技术贴】解决Eclipse编译java源文件之后没有生成class文件|找不到class文件
    小米1s 正式为我服役,纪念一下。
    解决servlet的out输出流html中文乱码
    小米1s充电时屏幕一直亮着不关闭的解决办法
    今天遇到的问题分析
    java操作Excel(org.apache.poi.hssf.usermodel)
    HTML滚动文字代码 marquee标签
    MIUI小米 卸载金山安全服务
    Oracle DBA 逻辑备份试题
    Oracle DBA结构试题1
  • 原文地址:https://www.cnblogs.com/wantao/p/7828596.html
Copyright © 2011-2022 走看看