当前位置:首页 » 操作系统 » 栈初始化算法

栈初始化算法

发布时间: 2024-05-28 19:35:25

A. 求用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->_top >= STACK_SIZE) return PUSH_POP_ERROR;
stack->_collection[stack->_top++] = d;
return PUSH_POP_SUCCESS;
}
// 出栈
u_int_f pop(S_STACK *stack, int *e){
if (!stack->_top) return PUSH_POP_ERROR;
*e=stack->_collection[--(stack->_top)];
return PUSH_POP_SUCCESS;
}
int main(){
S_STACK stack = { {0},0 };
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
int gv = 0;
pop(&stack, &gv);
printf("%d\n", gv);
system("PAUSE");
return 0;
}

B. C语言编程实现顺序栈的初始化,入栈,出栈,取栈顶元素,显示操作

#define STACKSIZE 100
int mstack[STACKSIZE],top,bottom;
void mInitStack() { top=bottom=0; }
void mPush(int x) { if ( top-bottom<=STACKSIZE ) { mstack[top]=x; top++; } }
int mPop() { int r=0; if ( top>bottom ) { r=mstack[top]; top--; } return r; }
void mShowStack() { int i; printf("["); for ( i=bottom;i<top;i++ ) printf("%d ",mstack[i]); printf("] "); }
void main()
{
int i,n,x,loop=1,s;
char buffer[80];
mInitStack();
scanf("%d",&n); for ( i=0;i<n;i++ ) { scanf("%d",&x); mPush(x); }
mShowStack();
while ( loop )
{ buffer[1]=0; gets(buffer); s=1;
switch ( buffer[1] )
{ case 'O':
case 'o': x=mPop(); break;
case 'U':
case 'u': x=atoi(buffer+5); mPush(x); break;
case 'n':
case 'N': loop=0; break;
default: s=0; break;
}
mShowStack();
}
mShowStack();

}

热点内容
锐界七座买哪个配置好 发布:2025-07-01 14:14:59 浏览:980
svn下载linux 发布:2025-07-01 14:10:38 浏览:732
苹果手机打游戏和安卓哪个流畅 发布:2025-07-01 13:58:41 浏览:840
中原证券服务器怎么样 发布:2025-07-01 13:57:23 浏览:998
在简便算法 发布:2025-07-01 13:32:06 浏览:766
c语言表达式绝对值 发布:2025-07-01 13:25:45 浏览:491
获取网站访问量 发布:2025-07-01 13:20:28 浏览:296
平行线算法 发布:2025-07-01 13:10:13 浏览:603
c语言不可嵌套的是 发布:2025-07-01 13:04:33 浏览:330
三星手机老是显示存储空间不足 发布:2025-07-01 13:00:09 浏览:595