好库网 好库网首页 | 我的好库
VC开发指南

C语言实现堆栈stack操作

发布者:vchelp
发布日期:2012/6/18 20:55:13   更新日期:2012/6/18 20:55:42
阅读次数:5377
评分:4.80
介绍:堆栈(stack)和队列正好相反,采用后进先出的策略。对堆栈的基本操作是存和取,习惯上分别称作push压入和pop弹出。
正文:

堆栈(stack)和队列正好相反,采用后进先出的策略。对堆栈的基本操作是存和取,习惯上分别称作push压入和pop弹出。

示例源代码:

 

#include <stdio.h>
#include <stdlib.h>
#define Max 100

int *p;
int *tos;
int *bos;

/*添加一个数据放到堆栈对顶端*/
void push(int i)
{
	if(p > bos)
	{
		printf("堆栈以满\n");
		return;
	}
	*p = i;
	p++;
}

/*丛堆栈顶端取出一个数据*/
int pop(void)
{
	p--;
	if(p < tos)
	{
		printf("堆栈下溢\n");
		return 0;
	}
	return *p;
}

void main(void)
{
	int a,b;
	char s[80];
	p = (int *)malloc(Max*sizeof(int));
	if(!p)
	{
		printf("分配内存失败");
		exit(1);
	}
	tos = p;
	bos = p + Max -1;
	printf("请输入第一个数据:\n");
	scanf("%d",&a);
	push(a);
	printf("请输入第二个数据:\n");
	scanf("%d",&b);
	push(b);
	printf("请输入操作符:\n");
	scanf("%s",s);
	switch (*s)
	{
	case '+':
		a = pop();
		b = pop();
		printf("结果是a+b = %d\n",(a+b));
		push(a+b);
		break;
	case '-':
		a = pop();
		b = pop();
		printf("结果是a-b = %d\n",(a-b));
		push(a-b);
		break;
	case '*':
		a = pop();
		b = pop();
		printf("结果是a*b = %d\n",(a*b));
		push(a*b);
		break;	
	case '/':
		a = pop();
		b = pop();
		printf("结果是a/b = %d\n",(a/b));
		push(a/b);
		break;
	default:
		printf("请输入正确操作符\n");
	}
}

 

 


评论 [发表评论]
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。