| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1897 人关注过本帖
标题:栈怎么删除元素
只看楼主 加入收藏
wbajieng
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2010-3-28
结帖率:71.43%
收藏
已结贴  问题点数:12 回复次数:6 
栈怎么删除元素
Status Pop(SqStack &S,SElemType &e){
       //若栈不空则删除S的栈顶元素,用e返回其值
       if(S.top==s.base)  return ERROR;
       e=*--S.top;
       return OK;
}//Pop
这是书上的删除栈顶元素的方法,不过我觉得这样做只把栈顶指针向下移了一位,原来那个地址上的元素应该还存在吧。
请高手帮忙讲一下!谢谢了哈!
搜索更多相关主题的帖子: 元素 删除 
2010-05-10 21:42
LegendofMine
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-10 21:47
hzh512
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:234
专家分:1333
注 册:2009-6-5
收藏
得分:6 
数据结构中分存储结构和逻辑结构。
栈是一种逻辑结构,这你应该知道。
在实现上,即栈对应的存储结构为 顺序结构 和 链式结构两种。
如果你用数组,此时删除只是下标后移,通过数组你仍能访问。
如果你用链栈,那么可能要释放掉的,此时是真删除了,你找不会地址了。
遇到问题要仔细想想!

编程=用几种语言在某个或几个平台上通过抽象思维运用一系列算法来解决现实中问题的手段
2010-05-10 21:59
aitajiujiage
Rank: 2
等 级:论坛游民
帖 子:21
专家分:34
注 册:2010-5-10
收藏
得分:6 
下面是我的栈删除的做法,你可以参考一下:
顺序栈的删除:
typedef struct
{int stack[100];
int top;
}seqstack;
int stackposh()
{seqstack *s;
if(s->top==-1)
{printf("此栈为空!");
return NULL;
}
else
return s->stack[s->top+1];
}
链式栈的删除:
typedef struct node
{int data;
struct node *next;
}NODE;
typedef struct
{NODE *top;
}linkstack;
linkstack *stackpop(linkstack *s)
{linkstack *p;
if(s->top==NULL)
{printf("此战为空!");
return NULL;
}
else
{
p=top;
top=top->next;
free(p);
return(top);
}
}                                                                                          
2010-05-10 23:07
wbajieng
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2010-3-28
收藏
得分:0 
高手如云啊
在下懂了。
谢了哈!!
2010-05-12 14:20
tfxanxing
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:82
专家分:165
注 册:2010-5-7
收藏
得分:0 
顺序存储结构pop ,就行了,
链式存储结构最多再 delete 对应单元就行
2010-05-12 20:21
鸣行天下
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-23
收藏
得分:0 
如果你使用了单链表形式建立那就要FREE(q)把它给删了
2010-05-23 11:44
快速回复:栈怎么删除元素
数据加载中...
 
   



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

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