| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖, 1 人收藏
标题:请教:用C语言写栈
只看楼主 加入收藏
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
结帖率:76.19%
收藏(1)
已结贴  问题点数:10 回复次数:18 
请教:用C语言写栈
我想用C语言实现栈,我的思路是用单链表的逆置来实现栈的“先进后出”,但感觉麻烦;有没有别的简单一点的方法,请教各位!
搜索更多相关主题的帖子: C语言 
2010-02-17 16:40
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:0 
另外,能否告诉一下栈的好处?小弟初学,没有感触

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-02-17 16:41
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
把链表头作为栈顶不就好了
收到的鲜花
  • Devil_W2010-02-17 23:32 送鲜花  -2朵   附言:链表表头是做堆底的,有点常识不
2010-02-17 17:13
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
STL stack
2010-02-17 17:18
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:0 
回复 3楼 heartnheart
怎么具体实施?

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-02-17 18:06
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:0 
回复 4楼 Devil_W
我还没到那么深的层次

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-02-17 18:08
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
C没有STL吧。
楼主单链表逆置是啥意思
2010-02-17 18:13
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
单链表 或者  数组 的递归逆向输出,倒可以实现 栈 的先进后出.
2010-02-17 20:32
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:6 
程序代码:
#include<iostream>
#include<exception>
using namespace std;
template<class Type>
struct node
{
    Type key;
    node *next;
    node(Type k):next(NULL){ key=k;}
    node<Type>(node<Type> & n){
        this->key=n->key;
        this->next=n->next;
    }
    ~node(){ next=NULL;}
};

template<class Type>
class stack
{
private:
    size_t Size;
    node<Type> *tail;
    node<Type> *top;
public:
    stack<Type>():top(NULL),tail(NULL),Size(0){}
    void push(Type n){    
        node<Type> *point=new node<Type>(n);
        try
        {
            point->next=top;
            top=point;
        }catch ( exception e)
        {
            
        }
    }
    Type pop()
    {
        node<Type> *tmp;
        Type k;
        try{
            if( tail == top )
            {
                throw exception();
            }
            tmp=top;
            top=top->next;
            k=tmp->key;
            delete tmp;
            return k;
        }catch ( exception e )
        {
            cout<<e.what();
            exit (1);
        }    
    }
    size_t size(){return Size;}
};

int main()
{

    stack<int> st;
    st.push(1);
    st.push(2);
    st.push(3);
    cout<<st.pop()<<endl;
    cout<<st.pop()<<endl;
    cout<<st.pop()<<endl;
    return 0;
}
2010-02-17 21:03
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
我就是 用单链实现的stack.
2010-02-17 21:09
快速回复:请教:用C语言写栈
数据加载中...
 
   



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

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