标题:栈的顺序储存
只看楼主
愿o圆o安
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-13
结帖率:25%
 问题点数:0 回复次数:3 
栈的顺序储存
#include<stdio.h>
#include<stdlib.h>
#define MaxStackSize 100

typedef char DateType;
typedef struct
{
    DateType *base;
    DateType *top;
    int stacksize;
}SqStack;

int StackInitnate(SqStack *s)   
{
    s->base=(DateType *)malloc(MaxStackSize*sizeof(DateType));
       if(!s->base)
       {      
               printf("分配空间失败!\n");
               return 0;
       }
      s->top=s->base;
       s->stacksize=MaxStackSize;
printf("栈初始化成功!\n");
       return 0;
}

int StackPush(SqStack *s)
{
    DateType x;
    if(s->top-s->base>=MaxStackSize)
    {
        printf("堆栈已满无法插入!");
        return 1;
    }
    else
    {
        fflush(stdin);
        printf("请输入要插入的值:");
        x=getchar();
        *s->top=x;
        s->top++;
        return 1;
    }
}

int StackPop(SqStack &s,DateType *d)
{
    if(s.top==s.base)
    {
        printf("栈为空\n");
        return 0;
    }   
    s.top--;
    d=s.top;
    return 1;
}

int StackTop(SqStack &s,DateType *d)
{
    if(s.top==s.base)
    {
        printf("栈为空\n");
        return 0;
    }
    else
    {
        while(s.top!=s.base)
        {
            d=s.top-1;
            s.top=s.top-1;
            printf("%c",d);
        }
    }
    printf("\n");
}

void main()
{
    int choice;
    DateType e;
    SqStack s;

    do
    {
        printf("===============================\n");
        printf("           0:退出\n");
        printf("           1:初始化栈\n");
        printf("           2:入栈\n");
        printf("           3:出栈\n");
        printf("           4:读取栈顶元素\n");
        printf("===============================\n");
        printf("输入操作选择代码(0-4):");
        scanf("%d",&choice);
        while(choice<0||choice>4)  {printf("输入有误,请重新输入(0-4):");scanf("%d",&choice);}
        switch(choice)
        {
            case 0:exit(1);
            case 1:StackInitnate(&s);break;
            case 2:printf("2\n");StackPush(&s);break;
            case 3:StackPop(s, &e);printf("出栈元素的值是:%c\n",e);break;
            case 4:StackTop(s, &e);printf("栈顶元素的值是:%c\n",e);break;
        }

    }while(choice);
}
搜索更多相关主题的帖子: include return 空间 
2017-04-10 22:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
秀代码?那和std::stack不能比
2017-04-11 08:53
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
自己写栈。好有雅兴
2017-04-11 14:46
愿o圆o安
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2017-3-13
得分:0 
有些问题 不能正常运行  现在改好了
2017-04-11 21:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475981-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.219902 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved