c++编写一个类,实现简单的栈(用链表结构)

数据的操作按先进后出的顺序。成员函数:voidstack::put(intitem);//将数据item插入到栈中intstack::get();//从栈中取一个数据数据... 数据的操作按先进后出的顺序。

成员函数:
void stack::put(int item);//将数据item插入到栈中
int stack::get();//从栈中取一个数据

数据成员:
一个指向链首的指针

链表结构为:
struct Node{
int a;
Node* next;
};

使用对象的过程:
stack st;

st.put(10);
st.put(12);
st.put(14);

cout<<st.get()<<endl;//输出14,栈中剩下10,12
cout<<st.get()<<endl;//输出12,栈中剩下10
展开
 我来答
doggie198
推荐于2016-07-25
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
//stack.h
#include<iostream.h>

struct Node{
int a;
Node* next;
};

class Stack{
public:
Stack(){
head=NULL;
}
void put(int item);
int get();

protected:
Node* head;
};

//-----------------------------------------------------------
//stack.cpp
#include "stack.h"

void Stack::put(int item){
Node* ss=new Node;
ss->a=item;
if(head==NULL){
head=ss;
ss->next=NULL;
}
else{
Node* sEnd=head;
ss->next=sEnd;
head=ss;
}
}

int Stack::get(){
if(head==NULL){
cout<<"the end of stack.\n";
return 0;
}
else{
int aa=head->a;
Node* ss=head;
head=head->next;
delete ss;
return aa;
}
}

//-----------------------------------------------------
//main.cpp
#include "stack.h"

void main(){
Stack st;

st.put(10);
st.put(12);
st.put(14);

cout<<st.get()<<endl;
cout<<st.get()<<endl;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ninigou
2007-08-22 · 超过10用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
class stack
{
private :
Node *top;
public :
stack();
void put(int val);
int get();
};

stack::stack()
{
top=NULL;
}

void stack::put(int val)
{
Node *newnode=new Node();
newnode->a=val;
newnode->next=top;
top=newnode;
}
int stack::get()
{
if(top==NULL)
return -1;
Node *newnode=new Node();
int num=top->a;
newnode=top->next;
delete top;
top=newnode;
return num;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
superliu1122
2007-08-21 · TA获得超过119个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:112万
展开全部
typedef struct tagNode {
int a;
struct tagNode * next;
} Node;

class stack {
private:
Node * top;
public:
stack() {
top=NULL;
}

void put(int item) {
Node * i = new Node();
i->a = item;
i->next = top;
top = i;
}
int get() {
int result = 0;
Node * old;
if(top != NULL) {
result = top->a;
old = top;
top = top->next;
delete old;
}
//这里栈为空的时候直接返回了0,没有进行其他处理
return result;
}
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式