数据结构栈实现的代码有些问题,自已看不出,请高手指教

来源:百度知道 编辑:UC知道 时间:2024/07/06 13:15:50
#include <stdio.h>
#include <stdlib.h>
#define StackSize 8
typedef struct
{
char data[StackSize];
int top1,top2;
}DbStack;
void initStack(DbStack *s)
{
s->top1 = -1;
s->top2 = 8;
}

//判断栈满
int stackFull(DbStack *s)
{
return s->top1 == s->top2-1;
}
//入栈
void push(DbStack *s, char c,int k)
{
if (stackFull(s))
{
printf("overFlow");
return ;
}
switch (k)
{
case 1:
s->data[++s->top1] = c;
break;
case 2:
s->data[++s->top2] = c;
break;
default:
printf("k不合法");
return ;
}
}

//显示
void dis(DbStack *s,int k)
{
int count;
if (k ==1)
{
if (s->top1==-1)
{

帮你改了一下:
#include <stdio.h>
#include <stdlib.h>
#define StackSize 8
typedef struct
{
char data[StackSize];
int top1,top2;
}DbStack;
void initStack(DbStack *s)
{
s->top1 = -1;
s->top2 = 8;
}

//判断栈满
int stackFull(DbStack *s)
{
return s->top1 == s->top2-1;
}
//入栈
void push(DbStack *s, char c,int k)
{
if (stackFull(s))
{
printf("overFlow");
return ;
}
switch (k)
{
case 1:
s->data[++s->top1] = c;
break;
case 2:
s->data[--s->top2] = c; //应该是--s->top2才对,要不然数组越界啦
break;
default:
printf("k不合法");
return ;
}
}

//显示
void dis(DbStack *s,int k)
{

if(k ==1)
{
if(s->top1!=-1) //还有这里
{
while (s->top1!=-1)
{
printf("%