注册 登录
编程论坛 数据结构与算法

栈的应用 求大神帮助,为什么求不出长度来

hua151hua 发布于 2013-11-19 14:09, 450 次点击
#include "stdio.h"
#include "malloc.h"
#define stack_size 10
#define error
#define ok
typedef char elemtype;
typedef struct stack
{
  elemtype elem[stack_size];
  int top;
  int length;
 }sqstack;

void emptystack(sqstack *s)/*置空栈*/
{

  s->top=-1;

 }

int leng(sqstack *s)
{
  return (s->length);
 }


int push(sqstack *s,elemtype e)/*进栈*/
{
  if(s->top>=stack_size-1)
     return error;
  else
  {
     s->top++;
     s->elem[s->top]=e;
     return ok;
   }
 }

/*int pop(sqstack *s,elemtype *e)
{
  if(s->top<0)
     return error;
  else
  {
    *e=s->elem[s->top];
    s->top--;
    return ok;
   }
 }*/




int main()
{
 sqstack s;
 emptystack(&s);
 push(&s,'a');
 push(&s,'b');
 printf("%d",leng(&s));
 getch();


 }
2 回复
#2
yuccn2013-11-19 15:08
int push(sqstack *s,elemtype e)/*进栈*/
{
  if(s->top>=stack_size-1)
     return error;
  else
  {
     s->top++;
     s->elem[s->top]=e;
     return ok;
   }
}

因为你的push的时候,length 并不增长,他一直都没有被初始化

为什么你要一个top,同时又要一个length?两个数据不是冗余了吗?
用一个就可以控制该栈了
#3
hua151hua2013-11-22 20:10
1