一、 实验目的
掌握栈的基本操作:初始化栈、判栈为空、出栈、入栈等运算。
二、实验要求
1.认真阅读和掌握本实验的算法。
2.上机将本算法实现。
3.保存和打印出程序的运行结果,并结合程序进行分析。
三、实验内容
利用栈的基本操作实现将任意一个十进制整数转化为R进制整数
算法为:
1、定义栈的顺序存取结构
2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)
3、定义一个函数用来实现上面问题:
十进制整数X和R作为形参
初始化栈
只要X不为0重复做下列动作
将X%R入栈
X=X/R
只要栈不为空重复做下列动作
栈顶出栈
输出栈顶元素
参考程序:
#define MAXSIZE 100 #include<stdlib.h> struct stack{ int data[MAXSIZE]; int top; };
void init(struct stack *s){ s->top=-1; }
int empty(struct stack *s){ if(s->top==-1) return 1; else return 0; }
void push(struct stack *s,int i){ if(s->top==MAXSIZE-1){ printf("Stack is full\n"); return; } s->top++; s->data[s->top]=i; }
int pop(struct stack *s){ if(empty(s)){ printf("stack is empty"); return -1; } return(s->data[s->top--]); }
void trans(int num){ struct stack s; int k; init(&s); while(num){ k=num%16; push(&s,k); num=num/16; } while(!empty(&s)){ k=pop(&s); if(k<10) printf("%d",k); else printf("%c",k+55); } printf("\n"); }
main(){ int num; clrscr(); printf("Input a num,-1 to quit:\n"); scanf("%d",&num);
while(num!=-1){ trans(num); scanf("%d",&num); }
}
|
阅读(1452) | 评论(0) | 转发(1) |