链栈的问题?有人能解释1下吗!

y19881105 2010-08-12 10:10:29
链栈的类型说明:
typedef struct stacknode{
DataType data;
struct stacknode * next;
}StackNode;

typedef struct{
StackNode * top;
} LinkStack;

书上说 虽然低二个类型第一中的结构只包含一个栈,可省略结构定义而直接用top指针来定义栈。但是进,退栈操作要
频繁修改top指针本身,而C的函数调用中缺乏C++那样的引用调用,所以必须使用指针的指针作为参数才能在函数体中修改实参指针top本身。

它指的修改top本身 是top所存的地址变量,还是top的地址,如果是修改top所存的地址变量,那何必定义第2个,如果是修改top这个指针变量所在的地址,那和进退栈又有什么关系? 希望高人解答!!!!!!!!
...全文
147 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
air_snake 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 baiyuan8826 的回复:]

每次传入StackNode类型的指针,也返回StackNode类型的指针,指向新栈顶,如
StackNode* Push( IN StackNode* top, IN DataType* pdata );
StackNode* Pop( IN StackNode* top, OUT DataType* pdata );
[/Quote]

就是这个问题.你必须依靠返回值才能找到你堆栈的top,如果你的函数定义返回int
int Push( IN StackNode** top, IN DataType* pdata );
int Pop( IN StackNode** top, OUT DataType* pdata );
这就是书上说的意思,不然你更改不了top

定义第二个是为了减少理解麻烦
int Push( IN LinkStack* top, IN DataType* pdata );
int Pop( IN LinkStack* top, OUT DataType* pdata );


mao_pu_hua 2010-08-18
  • 打赏
  • 举报
回复
其实书上说的进退栈都传入的是LinkStack *p类型的。 你又没有修改p的值,只是修改了p->top的值。肯定是没问题的。呵呵。
fx397993401 2010-08-15
  • 打赏
  • 举报
回复

canshui 2010-08-15
  • 打赏
  • 举报
回复
c语言中的函数的传递按值传递的,这句话虽然看似简单,不过lz还要在好好理解一下……

对于,指针类型当然也不例外!你要达到在函数中,对一个指针变量进行修改。传递的时候,要传递该指针变量的地址。然后,修改这个地址内的指针变量的值,即你说的 “top所存的地址变量” ……,达到对栈的修改……
baiyuan8826 2010-08-14
  • 打赏
  • 举报
回复
每次传入StackNode类型的指针,也返回StackNode类型的指针,指向新栈顶,如
StackNode* Push( IN StackNode* top, IN DataType* pdata );
StackNode* Pop( IN StackNode* top, OUT DataType* pdata );
maoxing63570 2010-08-13
  • 打赏
  • 举报
回复
如果楼主需要可以给我留言,留下你的邮箱,我发个我写的代码给你看下吧
maoxing63570 2010-08-13
  • 打赏
  • 举报
回复
既然是通过指针的指针来操作的话,那么修改的肯定就是top本身所存储的地址了,但是这样做并不好,可能会使top所向的元素不是栈底元素,最好还是直接通过一重指针来做要比较好点
Six_dimensional 2010-08-13
  • 打赏
  • 举报
回复
它指的修改top本身 ,是top的地址,
y19881105 2010-08-13
  • 打赏
  • 举报
回复
Top应该指向的是栈顶元素吧
a707569552 2010-08-12
  • 打赏
  • 举报
回复
我觉得修改top所存的地址变量来使之永远指向栈顶,至于为什么定义LinkStack,感觉定不定义都无所谓,
liuhaifeng1976 2010-08-12
  • 打赏
  • 举报
回复
top始终指向栈顶,每压入Stacknode,top就加1 ,这里data是有顺序的,每个data有一个指针指向后一个data ,这是我的理解

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧