大神,麻烦您为我解答一下关于C++的问题,完全不会!

!!!!将下列题目改成用类实现,要求有构造函数、析构函数。并增加一个拷贝构造函数,实现栈的拷贝操作。!!!!!题目:使用链表实现一个整数堆栈的相关函数.堆栈的数据结构如下... !!!!将下列题目改成用类实现,要求有构造函数、析构函数。并增加一个拷贝构造函数,实现栈的拷贝操作。!!!!!

题目:

使用链表实现一个整数堆栈的相关函数.堆栈的数据结构如下:
struct StackNode
{
int Data;
struct StackNode *pNext;
};
struct Stack_T
{
struct StackNode * head;
int size;
};

堆栈至少包括操作:
1. Stack_T * CreateStack()创建一个空堆栈,返回指向栈顶的指针。
2. void StackPush(Stack_T * pStack, int num) 把一个整数压入到堆栈的栈顶,输入参数为栈指针和需要压入栈的整数。返回值为空。
3. int StackPop(Stack_T * pStack)返回把栈顶的整数,同时把栈顶的数从堆栈里弹出(移除)。输入参数为栈指针。返回值为被弹出栈的整数。
4. int StackTop(Stack_T * pStack)返回值:栈顶的整数。输入参数为栈指针。
5. int StackSize(Stack_T * pStack)返回值:当前堆栈的长度。输入参数为栈指针。
*6. void FreeStack(Stack_T * pStack),清空Stack。

其他要求:
1. 尽量考虑代码的鲁棒性(健壮性),比如栈为空的时候,StackPop和StackTop如何处理。提示:可以抛出异常或者使用assert语句。
2. 程序分成两个文件:Stack.h和Stack.c文件。在Stack.h文件里定义结构体,声明函数。在Stack.c文件里实现堆栈操作的各个函数。
展开
 我来答
me1171115772
2015-04-02 · 超过21用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:39.1万
展开全部
只是个人浅显的意见而已,不敢妄图说对。我只是希望我做的能对你有点帮助就行,别嘲笑我哈,我是新手。

#include<iostream>
using namespace std;
struct StackNode
{
int data;
struct StackNode *Next;

};

struct Stack_T
{
struct StackNode *head;
int size;

};

class Stack
{
public:
Stack(){

Node = (new StackNode);
T = new Stack_T;
}
Stack_T *CreateStack();
void StackPush(Stack_T *pStack, int num);
int StackPop(Stack_T*pStack);
int StackTop(Stack_T*pStack);
int StackSize(Stack_T *pStack);
void FreeStack(Stack_T *pStack);
~Stack();
private:
StackNode *Node;
Stack_T *T;
};
Stack_T *Stack::CreateStack()
{
Stack *p =new Stack;
StackNode *head;
head = this->T->head;
head->Next = p->Node;
return this->T;
}
void Stack::StackPush(Stack_T *pStack, int num){

pStack->head->data = num;

}
int Stack::StackPop(Stack_T*pStack)
{
int num;
num = pStack->head->data;
pStack->head = pStack->head->Next;
return num;

}
int Stack::StackSize(Stack_T *pStack)
{
StackNode *p = pStack->head;
int n=0;
if (p == NULL)
{
cout << "空链表" << endl;
return 0;
}
else while (p != NULL)
{
p = p->Next; ++n;
}
return n;
}
void Stack::FreeStack(Stack_T *pStack)
{
StackNode *p, *q;
while (p != NULL)
{

p = pStack->head;
q = p;
p = q->Next;
delete q;
}
delete pStack;

}
追问
首先谢谢你!!但是我不懂你的函数功能最终如何实现,能否告诉我main函数中应该如何调用这些函数?太感谢了!
追答
你先看看每个函数实现的方式,注意形参和返回类型,如果你想要一个完整的,晚上发给你吧。我只是个新手。。。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式