| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1611 人关注过本帖
标题:栈的顺序储存
只看楼主 加入收藏
愿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
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册: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
快速回复:栈的顺序储存
数据加载中...
 
   



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

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