实验三--顺序栈操作实现
- 格式:doc
- 大小:4.99 MB
- 文档页数:7
void Error(char *s); /*自定义错误处理函数*/
void InitStack(SeqStackptr sp); /*初始化栈——置空栈*/
int EmptyStack(SeqStackptr sp); /*判栈空*/
int FullStack(SeqStackptr sp); /*判栈满*/
void Push(SeqStackptr sp, datatype x); /*进栈(元素压入栈顶)*/ datatype Pop(SeqStackptr sp); /*出栈(元素从栈顶弹出)*/
datatype GetTop(SeqStackptr sp); /*读栈顶元素(不出栈)*/
int Count(SeqStackptr sp); /*计算栈中元素个数*/
void Error(char *s) /*自定义错误处理函数*/
{
printf("\n %s", s);
exit(1); /*返回OS,该函数定义在stdlib.h中*/
}
void InitStack(SeqStackptr sp) /*初始化栈——置空栈*/
{
sp->top = 0;
}
int EmptyStack(SeqStackptr sp) /*判栈空*/
{
return sp->top == 0; /*返回值为1,栈空;返回值为0,栈不空*/ }
int FullStack(SeqStackptr sp) /*判栈满*/
{
return sp->top >= MAX; /*返回值为1,栈满;返回值为0,栈不满*/ }
void Push(SeqStackptr sp, datatype x) /*进栈(元素压入栈顶)*/
{
if (FullStack(sp)) { /*若栈满*/
Error("Stack Full");
}
sp->data[sp->top] = x;
sp->top++;
}
datatype Pop(SeqStackptr sp) /*出栈(元素从栈顶弹出)*/
{
if (EmptyStack(sp)) { /*若栈空*/
Error("Stack Empty");
}
sp->top--;
return sp->data[sp->top];
}
datatype GetTop(SeqStackptr sp) /*读栈顶元素(不出栈)*/
{
if (EmptyStack(sp)) { /*若栈空*/
Error("Stack Empty");
}
return sp->data[sp->top - 1];
}
int Count(SeqStackptr sp) /*计算栈中元素个数*/
{
return sp->top;
}
sy13.cpp:
#include"seqStack.h"
void Trans(int n, int r, char str[]); /*把n整数转换为r进制的值并存于str数组中*/
void TransFile(int r, char strin[], char strout[]); /*把strin文件中十进制整数转换为r进制的值并存于文件strout中。其中strin和strout字符数组中分别存放源文件名和目标文件名*/
void main() {
int r;
char s[MAX], t[MAX];
printf("请输入进制r的值:");
scanf("%d", &r);
TransFile(r, s, t);
}
void Trans(int n, int r, char str[]) { /*把n整数转换为r进制的值并存于str 数组中*/
int i, c;
SeqStack s;
InitStack(&s);
do {
c = n%r;
if (c < 10) {
c = c + '0';
}
else {
c = c - 10 + 'a';
}
Push(&s, c);
} while (n /= r);
i = 0;
while (!EmptyStack(&s)) {
str[i++] = Pop(&s);
}
str[i] = '\0';
}
void TransFile(int r, char strin[], char strout[]) { /*把strin文件中十进制整数转换为r进制的值并存于文件strout中。其中strin和strout字符数组中分别存放源文件名和目标文件名*/
int num, i, n;
char result[MAX];
FILE *fin;
FILE *fout;
if ((fin = fopen("D:/strin.txt", "r")) == NULL) {
Error("Can not open file!");
}
if ((fout = fopen("D:/strout.txt", "w")) == NULL) {
Error("Can not open file!");
}
fprintf(fout, "源数据转化为%d进制后为:\n", r);
while (!feof(fin)) {
fscanf(fin, "%d", &num);
Trans(num, r, result);
fprintf(fout, "%s ", result);
}
fclose(fin);
fclose(fout);
}
4.源文本文件的内容,程序执行后目标数据文件的内容