实验三--顺序栈操作实现

  • 格式:doc
  • 大小:4.99 MB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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.源文本文件的内容,程序执行后目标数据文件的内容