1. 采用顺序栈完成进制转换
(1)定义顺序栈的存储结构;
(2)实现顺序栈的初始化、判断是否为空、进栈、出栈等基本操作;
(3)调用顺序栈的基本操作实现进制转换。
//采用顺序栈完成进制转换
//(1)定义顺序栈的存储结构;
//(2)实现顺序栈的初始化、判断是否为空、进栈、出栈等基本操作;
//(3)调用顺序栈的基本操作实现进制转换。
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef struct {
int data[MaxSize];
int top;
}SqStack;
//初始化
void InitStack(SqStack *&s){
s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
//判断是否为空
bool StackEmpty(SqStack *s){
return(s->top==-1);
}
//进栈
bool Push(SqStack *&s,int e){
if(s->top==MaxSize-1) {
return false;
}
s->top++;
s->data[s->top]=e;
return true;
}
//出栈
bool Pop(SqStack *&s,int &e){
if(s->top==-1) return false;
e=s->data[s->top];
s->top--;
return true;
}
//进制转换
void conversion(int n,int m){
SqStack *s;
InitStack(s);
int b;
printf("%d用%d进制表示为:",m, n);
while (m) {
Push(s, m%n) ;
m = m / n;
}
while (!StackEmpty(s)) {
Pop(s, b);
printf("%d", b);
}
}
int main(){
int m,n;
printf("请输入要转换的十进制数字:");
scanf("%d",&m);
printf("请输入要转换的进制:") ;
scanf("%d",&n);
conversion(n,m);
return 0;
}
2. 采用循环队列或链队列实现病人看病的模拟程序
(1)定义队列的存储结构;
(2)实现队列的初始化、判断是否为空、入队、出队等基本操作;
(3)调用队列的基本操作实现病人看病模拟程序包括排队、就诊、查询、退出等功能;
// 采用循环队列或链队列实现病人看病的模拟程序
//(1)定义队列的存储结构;
//(2)实现队列的初始化、判断是否为空、入队、出队等基本操作;
//(3)调用队列的基本操作实现病人看病模拟程序包括排队、就诊、查询、退出等功能
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef struct {
char data[];
int front,rear;
}SqQueue;
//初始化
void InitQueue(SqQueue *&q){
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
//判空
bool QueueEmpty(SqQueue *q){
return(q->front==q->rear);
}
//入队
bool enQueue(SqQueue *&q,char e){
if((q->rear+1)%MaxSize==q->front){
return false;
}
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return true;
}
//出队
bool deQueue(SqQueue *&q,char &e){
if(q->front==q->rear){
return false;
}
q->front=(q->front)%MaxSize;
e=q->data[q->front];
return true;
}
//选择菜单
int Menu_select(){
int s;
while(true) {
scanf("%d",&s);
if(s<0||s>5)
printf("\n\t 输入错误,请重新输入!\n");
else
break;
}
return s;
}
int main (){
SqQueue *q;
InitQueue(q);
int people=0;
char e;
printf("**********************************\n");
printf("* 欢迎进入就医排队管理系统! *\n");
printf("\n*\t请选择操作: *\n");
printf("*\t<1>:排队; *\n");
printf("*\t<2>:就诊; *\n");
printf("*\t<3>:查看排队情况; *\n");
printf("*\t<4>:退出运行; *\n");
printf("**********************************\n");
while(true){
switch(Menu_select()){
case 1:
enQueue(q,'A');
people++;
printf("排队成功!");
break;
case 2:
deQueue(q,e);
people--;
printf("就诊成功!") ;
break;
case 3:
printf("前面还有%d人",people-1);
break;
case 4:
printf("退出成功!");
break;
}
}
}