问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C++语言实现栈

发布网友 发布时间:2022-05-12 22:50

我来回答

1个回答

热心网友 时间:2023-10-28 03:02

#ifndef AVALON_STACK_H #define AVALON_STACK_H #include <stdio.h> #include <string.h> #include <assert.h> #ifndef AVALON_BOOL #define AVALON_BOOL #define TRUE 1 #define FALSE 0 typedef int BOOL;/*自定义的BOOL型*/ #endif /*定义一个栈结构*/ #define DECLARE_NODE(type,name) \ typedef struct type##NODE\ {\ type data;\ struct type##NODE *prior;\ }NODE##name; #define DECLARE_STACK(type,name) \ struct type##STACK\ {\ int size;\ struct type##NODE *base;\ struct type##NODE *top;\ }STACK##name; /*泛类型栈定义*/ #define DECLARE(type,name) \ DECLARE_NODE(type,name); \ DECLARE_STACK(type,name); /****************************************************/ /*初始化栈,name为新声明的栈名字的地址 */ #define INIT(name) \ do{\ STACK##name.base=STACK##name.top=NULL;\ STACK##name.size=0;\ }while(0) /*********** 不破坏栈顶元素取值*************************/ #define GET(name,elem) \ do{\ if(STACK##name.size != 0){\ elem=STACK##name.top->data; \ }\ }while(0) /************** 压入元素elem **************************/ #define PUSH(name,elem) \ do{\ NODE##name *temp=(NODE##name *)malloc(sizeof(NODE##name));\ assert(temp);\ temp->data=elem ;\ (STACK##name.size)++; \ if(1 != STACK##name.size ){ \ temp->prior=STACK##name.top;\ STACK##name.top=temp;\ }\ else{\ temp->prior=NULL;\ STACK##name.top=STACK##name.base=temp;\ }\ }while(0) /********** 栈顶元素赋值给elem,并弹出 ***********/ #define POP(name,elem) \ do{\ NODE##name * temp=STACK##name.top;\ if(STACK##name.size !=0 ){ \ *elem =STACK##name.top->data; \ if( STACK##name.size !=1){ \ STACK##name.top =temp->prior; \ free(temp);\ }\ else \ STACK##name.top=STACK##name.base=NULL;\ (STACK##name.size)--;\ }\ }while(0) /************** 清空栈 ************************/ #define CLEAR(name) \ do{\ NODE##name * temp;\ while( STACK##name.size-- !=0){\ temp=STACK##name.top;\ STACK##name.top=STACK##name.top->prior;\ free(temp);\ }\ STACK##name.size=0;\ STACK##name.base=STACK##name.top=NULL;\ }while(0) /****************栈空???? ************************/ #define EMPTY(name) ( STACK##name.size == 0 ) /*****************长度 ************************/ #define LENGTH(name) (1 ? STACK##name.size : 0) #endif /*这个是测试程序*/ #include "stack.h" #include <stdio.h> #include <stdlib.h> int main(void) { DECLARE(int,A); DECLARE(double,B); double b; int a; INIT(A); INIT(B); printf("%d ",LENGTH(A)); for(a=1;a<=10000 ;a++){ PUSH(A,a); PUSH(A,a); PUSH(A,a); } printf("%d ",LENGTH(A)); for(b=1;b<=10000;b++){ PUSH(B,b); } while( ! EMPTY(A)){ POP(A,&a); if( ! EMPTY(B)){ POP(B,&b); } } CLEAR(A); system("PAUSE"); return 0; } 能否帮上?
用C语言编写函数实现顺序栈的进栈、退栈、取栈顶的算法。

seqstack *s; //定义一个栈,用指针的方式定义的 initstack(s); //想初始化定义好的栈 //当栈为空时调用出栈操作 pop(s);//向栈中添加一个元素a push(s,'a');//观察此时的栈顶元素 x=gettop(s);printf("%c\n",x);//再添加一个元素b push(s,'b');//观察此时的栈顶元素...

c语言 栈的操作

printf("栈满\n");st-&gt;p--;return;} st-&gt;aa[st-&gt;p]=a;};//pop操作 T pop(stack* st){ if(isEmpty(st)){ printf("栈空");return NULL;} char t=st-&gt;aa[st-&gt;p];st-&gt;p=st-&gt;p-1;printf("%c ",t);return t;};//栈销毁 void destroy(stack* st){ free(st);};int...

求用C语言编写一个程序实现顺序栈初始化,出栈,入栈,判栈空,判栈满...

define STACK_SIZE 100 define PUSH_POP_SUCCESS 1 define PUSH_POP_ERROR 0 struct _stackbuf { int _collection[STACK_SIZE];int _top;};typedef struct _stackbuf S_STACK;typedef unsigned int u_int_f;// 入栈 u_int_f push(S_STACK *stack, int d){ if (stack-&gt;_top &gt;...

链栈(C语言)

j &gt; 0; j--) { Pop(&amp;top, &amp;e); printf("出栈元素为: %d\n", e); } system("pause"); // 程序暂停 return 0;}通过这个链栈实例,我们深入了解了如何在C语言中实现栈的链式存储,以及如何进行高效且受限的栈顶操作。链栈在数据结构和算法中扮演着重要角色,尤其是在内...

这样用C语言实现栈和往栈里插入和删除元素

以下程序通过VC6.0的编译,作用是将你输入的整数转换为 2 进制数(通过辅助栈实现的,过程中用到了你所要求的方法)。include "stdio.h"include "stdlib.h"define MAX 50 define OK 1 define ERROR 0 define YES 1 define NO 0 typedef int ElemType;typedef int Status;typedef struct tagStack{...

急!用c语言实现链栈的操作

struct node *next;} LinkStack;⑴置空栈 void InitLinkStack( LinkStack * &amp; s){ s=NULL;} ⑵判栈空 int IsEmptyLinkStack(LinkStack *s ){ if(s==NULL)return 1;else return 0;} ⑶ 入栈/*将元素x插入链栈top的栈顶*/ void PushLinkStack(LinkStack* &amp;s , ElemType x){ ...

关于C语言的顺序栈的操作

s.top=0;//栈顶指向当前栈顶的下一位置 q.front=q.rear=0;do { system("CLS");printf("\t\t***\n");printf("\t\t* 1.创建一个顺序栈 ...(1) *\n");printf("\t\t* 2.出栈...(2) *\n");printf("\t\t* 3.入栈...(3) *\n");printf("\t\...

一个关于栈的C语言代码。麻烦高手指点一下。刚学习,新手。求教。谢谢了...

define MAXNUM 100 struct Stack{ int a;double b;char c;};struct Stack stack[MAXNUM];int top=-1;define pop stack[top--]define push(s) stack[++top]=s

C语言里不用函数和指针如何实现数组的进栈和出栈

这个应该不是很难吧 可以使用一个变量标记一下栈顶的为止,比如int top = 0;这样每次进栈的时候top++,出栈的时候top--就可以了,注意判断栈满和栈空

哪位大神帮我看看这个C语言的题 那个 “栈”是什么意思啊

而取用的时候总是先取后洗好的放在最顶部的盘子,“栈”正是这样一种实际的抽象。在数据结构中也可以叫做“堆栈”,实质上是一种表头固定,只允许在表尾进行插入或删除的线性表,具体理解如图所示:所以出栈顺序应为:D,C,B,A,1,2,3,4,5 ...

C语言是什么语言 c 栈的实现 systemC语言 autoC语言 C++语言 whileC语言 constC语言 charC语言 flagC语言
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...90千瓦星角起动.60千瓦小容量电机和照明.请问用多大的铝芯线合适... ...星、三角起动,需截面多大的主线和电机负荷线,最好有计公式 梦见有人不断说我是魂古命的人 手相有田字纹代表什么,会越来越富的女人手相 ...旁边有活水流出!同时还梦见一个道士给看手相说过一阵运气就会好,今... 王者荣耀新英雄影如何获得 王者新英雄影怎么获得 说话中气不足锻炼方法 ...里面的油,可以用吸油管子吸出来吗?小车,凯美瑞。不知道有防盗网吗... qq密码忘记我输入现在的qq密码为什么出现以前的qq号呢我想 数据结构中,怎么用实现栈的基本操作? 如何实现栈的各种操作? 消灭小红蚂蚁最简单的办法? C++栈类的实现 使用数组实现栈 英雄钢笔吸什么黑墨水不堵笔? 清炒黄瓜最正宗的做法 玉米种子(单子叶植物)的胚里面有胚乳吗 6千到7千左右的电脑? 炒黄瓜做法 7000左右的笔记本电脑,有没有高手推荐一下 苹果笔记本7000左右的怎么样。 有胚乳和无胚乳的植物各是哪些? 有胚乳植物有哪些?(请举例子)无胚乳植物的种子有哪些(请举例子) 想买苹果笔记本,七千多左右的价位怎么样,好不好啊? 胚乳种子都有哪些?无胚乳种子有哪些? 为什么玉米大部分是胚乳 一个动漫人物,头发是*的,披着的,请问是哪部动漫的人物?(下图是此人) 有胚乳和无胚乳的植物各是哪些? 有胚乳种子和无胚乳种子的区别? 求桐人x 精灵王奥伯龙(须乡伸之)的文!!我不知道为什么喜欢上了这么冷门的cp 求!! 用C语言中的链表如何实现栈? 我的OPPOa37手机是没有空间的了装了内存卡后可以直接安装游戏了吗? 用C++实现栈的建立,进栈,出栈,写简单点,要有注释,谢谢各位了 数据结构 关于指针实现栈的问题 我的电脑不能调节屏幕大小了!怎么办? 早晨起床发现右膝盖疼,走路不舒服啥原因? 早上睡觉起来一开始走路膝盖疼是怎么回事 最近走路睡觉都膝关节部位疼痛,不知道怎么办,有没有什么办法治愈。 睡觉起来膝盖痛是什么病? 睡一觉发现膝盖疼怎么回事 为什么一觉醒来膝盖弯曲很疼 请教,我睡觉醒来右腿膝盖处就开始疼痛,非常厉 面包和蛋糕的历史是从哪个国家开始的?最初的是怎么来的?又经过什么历史传来中国的呢? 睡一觉起来左腿膝盖里酸痛,伸直时里面还有想声,走路有点痛,是&#xFFFD; 我睡觉醒来感觉膝盖疼痛,走路就疼去厕所蹲着还是没疼,这是怎么了呢?请高名医生解释下 我在这里先谢谢 提问:生日蛋糕是怎么来的? 我是左腿膝盖这边疼痛2年 今年严重起来 现在走路都痛 睡觉的时候都不能伸直 腿完全伸不直 想问下 蛋糕是怎么来的? 晚上睡觉膝盖痛是怎么回事? 黑森林蛋糕的起源是怎么来的啊?