| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 740 人关注过本帖
标题:栈的问题
取消只看楼主 加入收藏
静源
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-25
收藏
 问题点数:0 回复次数:1 
栈的问题

这是两个栈共享一个空间
#define M 500
typedef stuct {
elemtype stuct[M];
int top[2];
}DuStack;
初始化栈。
voidInitDuStack(DuStack *s)
{
s->top[0]=0;
s->top[1]=M-1;
}

int DuPush(DuStack *s,int i,elemtype x)
{
if(i!=0&&i!=1)
{printf("error!");
return(0);
}
if(s->top[0]==s->top[1])
{printf("over flow!");
return(0);
}
s->stack[s->top[i]]=x;
return(1);
}
在这里面 (i!=0&&i!=1)的作用是干什么的,想不明白。


还有一个问题是:
单链表中判断栈空。
int StackEmpty(SqStack *s)
{
if(s->top==0)
return(1);
else
return(0);
}
因为栈顶指示器TOP指示栈顶元素在顺序栈中的位置,但是数组下标从0开始,所以TOP指向实际栈顶元素后面的一个空位置,所以这里s->top指的是实际栈顶元素呢还是实际栈顶元素后面的元素,如果是实际栈顶元素后面的元素,那可是空的呀。如果是实际栈顶元素那么看一下下面的:
取栈顶元素:
elemtypeGetTop(SqStack *s)
{
if(s->top==0) return(0);
else return(s->stack[--s-top]);

}
如果 s->top指的是实际栈顶元素,那么为什么还有s->stack[--s-top])呢,
我很迷茫呀。

搜索更多相关主题的帖子: stuct 空间 define elemtype 
2007-10-25 12:50
静源
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-25
收藏
得分:0 
回复:(aipb2007)typedef stuct {elemtype stuct[M]...
你那个是指向实际元素的下一位置,也就是说初始化的时候top = 0
插入一个元素后top = 1
你的这句话我还是不明白呀?
我还是在看看书。
非常感谢。
2007-10-25 14:41
快速回复:栈的问题
数据加载中...
 
   



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

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