说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

C语言实现堆栈stack操作

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

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

示例源代码:

 

#include <stdio.h>#include <stdlib.h>#define Max 100int *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");	}}

 

 

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘