那个运用c++编写两个程序,其中一个是实现二叉树(或者栈),另一个是运用二叉树(或者栈)解决实际问题。谢谢啦,实在是没搞懂。
2条回答
- threenewbee 2014-12-11 11:26关注
/**
- <!--
- File : stack.h
- Author : fancy
- Email : fancydeepin@yeah.net
- Date : 2013-02-03
- --!> */ #include #include #include #define Element char #define INIT_SIZE 10 #define INCREMENT_SIZE INIT_SIZE / 2
typedef struct TStack {
Element *base;
Element *top;
int size;
} *Stack;//栈的构造器,创建空栈
void stackConstructor(Stack &stack){
stack->base = (Element *)malloc(INIT_SIZE * sizeof(Element));
if(!stack->base){
printf("\n为栈分配内存空间失败!\n");
exit(0);
}
stack->top = stack->base; //空栈 top == base
stack->size = INIT_SIZE;
}//是否为空栈
bool isEmpty(Stack stack){
if(stack->top == stack->base){
return true;
}
return false;
}//压栈
bool push(Stack &stack, Element e){
if(stack->top - stack->base >= stack->size){ //栈满
stack->base = (Element *)realloc(stack->base, (stack->size + INCREMENT_SIZE) * sizeof(Element));
if(!stack->base){
printf("\n为栈扩展内存空间失败!\n");
return false;
}
stack->top = stack->base + stack->size;
stack->size += INCREMENT_SIZE;
}
*stack->top++ = e;
return true;
}//弹栈
Element pop(Stack stack){
if(isEmpty(stack)){
printf("\n栈为空,弹栈操作失败!\n");
return ' ';
}
return *--stack->top;
}/**
- <!--
- File : Stack.cpp
- Author : fancy
- Email : fancydeepin@yeah.net
- Date : 2013-02-03
- --!> */ #include "stack.h"
int main() {
Stack stack; stackConstructor(stack); push(stack, 'f'); push(stack, 'a'); push(stack, 'n'); push(stack, 'c'); push(stack, 'y'); printf("%c", pop(stack)); printf("%c", pop(stack)); printf("%c", pop(stack)); printf("%c", pop(stack)); printf("%c", pop(stack)); //output[result]: ycnaf return 0;
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何提取csv文件中需要的列,将其整合为一篇完整文档,并进行jieba分词(语言-python)
- ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
- ¥15 扩散模型sd.webui使用时报错“Nonetype”
- ¥15 stm32流水灯+呼吸灯+外部中断按键
- ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
- ¥15 NX MCD仿真与博途通讯不了啥情况
- ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
- ¥15 gradio的web端页面格式不对的问题
- ¥15 求大家看看Nonce如何配置
- ¥15 Matlab怎么求解含参的二重积分?