cstack用法,如何在C语言里应用stack

1,如何在C语言里应用stack就用一个函数就可以了void print(SqStack p) while(top>=0)printf("%d ",p[top]);top--; }}
2,关于UCOSIII CSTACK问题请教这段时间忙工作去了,一直没来,看到各位的回复很高兴 。这个问题也早就解决了,nicholasldf说的非常对,iar在多任务系统里面会报这个是正常的,非常感谢你回复了这么多 。串口当时没通也是中断配置上没处理正确 。IAR才不知道你是裸机运行还是基于uCOS-III呢,所以一旦堆栈指针SP不在CSTACK之内,,IAR就会提示你可能程序是不是跑飞了?运行异常了?
3 , C程序中如何使用堆栈最简单实用的写法例:int stack[100+1];int top = -1;进栈 stack[++top] = value;出栈 value = http://www.lisdn.com/mnsj/hhjy/stack[top--];if(top<0) 栈为空if(top==100) 栈满学数据结构, 学的是思想实现起来可以各种各样 , 只要你写的熟练了,就会觉得很简单, 关键还是明白原理是什么,为什么这种数据结构适合这种问题,为什么它的时间复杂度更好而且到后来,数据结构根本不用你自己去写,写STL(标准模板库)的人,写了十几年甚至几十年的数据结构,他们不比咱写的好? 举个例子,自己写个红黑树要150行都不一定写得好 。用STL,就像用int一样简单,直接声明、 调用函数 。所以你要知道的就是红黑树是什么, 为什么好使 。数据结构很重要,但不难, 慢慢来,掌握好学习方法:)【cstack用法,如何在C语言里应用stack】
4 , c问题 关于栈的基本功能#include using namespace std; template class CStack { public: CStack(); void Push(T); T Pop(void); bool Empty(); private: int iSize; int iTop; std::vector Stack; } template CStack::CStack() { this->iSize = -1; this->iTop = -1; } template void CStack::Push(T Data) { this->Stack.push_back(Data); } template T CStack::Pop() { T Data = http://www.lisdn.com/mnsj/hhjy/this->Stack.back(); this->Stack.pop_back(); return Data; } template bool CStack::Empty() { return this->Stack.empty(); }class CStack{char data[1024];int iPos;public:CStack():iPos(0){}virtual ~CStack(){}bool empty() {return iPos==0;}char top() {return data[iPos];} // 不想用异常应该将栈底元素定义成一个特殊值void push(char c) {data[iPos++]=c;} // 栈满时应该抛出异常void pop() {iPos>0?--iPos:0;}}5 , includestack中有多少函数有哪些用法具体函数声明及其实现可以用记事本或IDE打开stack文件查看代码 。(VS2008中可以直接在#include上右击文件名选择打开文档 。)stack是模板栈类型,其中栈的节点类型为T 。例如定义struct BTreeNode BTreeNode data; BTreeNode *next;};那么stackst;就定义了一个栈st,其中每个节点的类型为BTreeNode* 。看样子st是用来存放树的节点指针的一个栈,作为实现某些算法的数据结构 。----[原创回答团]构造函数:stack()声明一个空栈;stack(mycont)声明一个初始内容复制自mycont的栈;函数:push将一个新元素压倒栈中;pop弹出栈中的元素,如果栈为空,结果未定义,函数返回void;top存取栈的顶端元素,如果栈为空,结果未定义,返回的是一个引用;empty测试栈是否为空;size获得栈中元素的个数;1.栈是存放函数返回地址、参数、局部变量的 。堆是程序可以自由操作的内存,使用时先申请,用完之后释放 , 如何使用完全由程序代码控制 。2.栈在汇编代码中表示成PUSH POP,用的是ESS段,SP寄存器而堆不是 , 是在内存中读写,EDS段,3.C++包括两种被应用程序管理的内存区域:一种称为栈(stack),另一种称为堆(heap) 。stack是函数被调用时自动分配的一块内存区域,它主要用于保留函数内使用的变量及函数调用位置处下一条代码的地址 。stack是后进先出,一个可变的指针指向stack的顶部 。本质上,当一个函数被程序调用时,当前的执行地址被放入stack,如果有参数传递到函数内,这些参数也被压入stack,如果函数内有变量 , 它们也被压入stack,如果函数执行时调用另一个函数,重复上面的过程 。当从函数返回时 , stack指针指向存放先前执行地址的位置,也就是说,stack空间内分配的元素已被删除 。这就是为什么函数内的变量此时无效 , 因为它们已经被推出了stack,另外要注意的是,声明一个静态变量,它没有进入stack中 。另一种由应用程序管理的内存区域是堆(heap),heap是储存应用程序的内存分配需求 , 并且分离于程序代码和stack,heap中分配的对象的总的空间受限于计算机系统中有效的虚拟内存 。C程序通常使用malloc和free分配和回收heap内存,在C++中 , 使用new和delete.4.函数里的变量一般是stack,用new和malloc分配的是heapstack是有大小限制的 , heap的大小与系统虚拟内存差不多stack运算比heap快stack由编译器来管理,heap由程序员new, malloc, delete, free5.heap____自由存储区stack____局部存储区通常意义上的堆栈一般指的就是栈具体函数声明及其实现可以用记事本或IDE打开stack文件查看代码 。(VS2008中可以直接在#include上右击文件名选择打开文档 。)stack是模板栈类型 , 其中栈的节点类型为T 。例如定义struct BTreeNode BTreeNode data; BTreeNode *next;};那么stackst;就定义了一个栈st,其中每个节点的类型为BTreeNode* 。看样子st是用来存放树的节点指针的一个栈 , 作为实现某些算法的数据结构 。----[原创回答团]

    推荐阅读