早教吧作业答案频道 -->其他-->
设计算法,入栈和出栈的操作。具体实现要求:1.写出栈的入栈和出栈算法。2.写一个程序,将输入的十进设计算法,入栈和出栈的操作。具体实现要求:1.写出栈的入栈和出栈算法。2
题目详情
设计算法,入栈和出栈的操作。具体实现要求: 1.写出栈的入栈和出栈算法。 2.写一个程序,将输入的十进
设计算法,入栈和出栈的操作。具体实现要求:
1.写出栈的入栈和出栈算法。
2.写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过。在此基础上修改程序,实现十进制数据M 向N 进制(2或8或16)的转换。
(1)采用顺序存储结构实现栈。
(2)采用链表结构实现栈。
设计算法,入栈和出栈的操作。具体实现要求:
1.写出栈的入栈和出栈算法。
2.写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过。在此基础上修改程序,实现十进制数据M 向N 进制(2或8或16)的转换。
(1)采用顺序存储结构实现栈。
(2)采用链表结构实现栈。
▼优质解答
答案和解析
楼主 ,这是我用链表结构实现的栈,以下是算法,顺序表部分没写,最近没什么时间,不好意思啦。。
#include
#include //包括malloc()和realloc()函数的头文件
#include //包括pow()函数的头文件
#define Max_stack_size 20
#define Addersize 10
typedef char Elemtype;
typedef struct{
Elemtype *base;
Elemtype *top;
int stacksize;
}sqStack;
void initStack (sqStack *s){ //初始化一个空栈
s->base=(Elemtype *)malloc(Max_stack_size*sizeof(Elemtype));
if(!s->base) exit(0);
s->top=s->base;
s->stacksize=Max_stack_size;
}
void pushStack(sqStack *s,Elemtype e){ //入栈操作
if(s->top-s->base>=s->stacksize)
{s->base=(Elemtype *)realloc(s->base,(s->stacksize+Addersize)*sizeof(Elemtype));
if(!s->base) exit(0);
s->top=s->base+s->stacksize;
s->stacksize=s->stacksize+Addersize;}
*(s->top)=e;
s->top++;
}
void popStack(sqStack *s,Elemtype *e){ //出栈操作
if(s->top==s->base) return;
*e=*--(s->top);
}
void clearStack(sqStack *s) //清空栈
{
s->top=s->base;
}
void destroyStack(sqStack *s){ //销毁栈
int i;
int len;
len=s->stacksize;
for(i=0;i {free(s->base);
s->base++;
}
s->base=NULL;
s->top=s->base;
s->stacksize=0;
}
int counterStack(sqStack s)
{return (s.top-s.base);}
void main()
{ sqStack p;
Elemtype c;
int i,sum,length;
sum=0;
printf("initial:\n");
initStack(&p);
printf("push the 8 scale:\n");
scanf("%c",&c); //输入数据时不能隔开,否则答案错误,空格也算字符
while(c!='#')
{pushStack(&p,c);
scanf("%c",&c);
}getchar();
length=counterStack(p); //有错时更容易检测到。。
printf("numbers'length:%d\n",length);
for(i=0;i {popStack(&p,&c);
{sum=sum+(c-48)*pow(8,i);} //二进制pow(8,i)改为pow(2,i),十六进制用if else如/**/中所示
}
/* if('0' else if('A' else if('a' printf("the answer is:%d\n",sum);
}
#include
#include
#include
#define Max_stack_size 20
#define Addersize 10
typedef char Elemtype;
typedef struct{
Elemtype *base;
Elemtype *top;
int stacksize;
}sqStack;
void initStack (sqStack *s){ //初始化一个空栈
s->base=(Elemtype *)malloc(Max_stack_size*sizeof(Elemtype));
if(!s->base) exit(0);
s->top=s->base;
s->stacksize=Max_stack_size;
}
void pushStack(sqStack *s,Elemtype e){ //入栈操作
if(s->top-s->base>=s->stacksize)
{s->base=(Elemtype *)realloc(s->base,(s->stacksize+Addersize)*sizeof(Elemtype));
if(!s->base) exit(0);
s->top=s->base+s->stacksize;
s->stacksize=s->stacksize+Addersize;}
*(s->top)=e;
s->top++;
}
void popStack(sqStack *s,Elemtype *e){ //出栈操作
if(s->top==s->base) return;
*e=*--(s->top);
}
void clearStack(sqStack *s) //清空栈
{
s->top=s->base;
}
void destroyStack(sqStack *s){ //销毁栈
int i;
int len;
len=s->stacksize;
for(i=0;i
s->base++;
}
s->base=NULL;
s->top=s->base;
s->stacksize=0;
}
int counterStack(sqStack s)
{return (s.top-s.base);}
void main()
{ sqStack p;
Elemtype c;
int i,sum,length;
sum=0;
printf("initial:\n");
initStack(&p);
printf("push the 8 scale:\n");
scanf("%c",&c); //输入数据时不能隔开,否则答案错误,空格也算字符
while(c!='#')
{pushStack(&p,c);
scanf("%c",&c);
}getchar();
length=counterStack(p); //有错时更容易检测到。。
printf("numbers'length:%d\n",length);
for(i=0;i
{sum=sum+(c-48)*pow(8,i);} //二进制pow(8,i)改为pow(2,i),十六进制用if else如/**/中所示
}
/* if('0'
}
看了 设计算法,入栈和出栈的操作。...的网友还看了以下:
某校广播站要招聘一名小记者,小明、小凯和小萍报名参加了三项测试,成绩如下表:采访写作计算机操作创意 2020-04-06 …
主机SCSI写操作有以下主要步骤:(1)主机系统API接口将用户写操作转换为SCSI写操作,(2)发 2020-05-31 …
计算机操作系统可以根据下面的术语来进行非正式分类:()操作系统用于一组输入设备的输入,这些设备可以被 2020-05-31 …
1.在对无符号数的位运算中,操作数左移三位相当于().A.操作数除以6B.操作数乘以6C.操作数除 2020-07-08 …
描写课外活动热闹的成语我来到操场上,看到同学们在打球、游戏、赛跑。。。请写出四个描写操场上热闹的场 2020-07-24 …
请写出三个描写人们救助灾民的情景的成语:()(请写出三个描写人们救助灾民的情景的成语:()()() 2020-07-24 …
小明参加了某电视台招聘记者的三项素质测试,成绩如下:采访写作70分,计算机操作60分,创意设计88 2020-08-03 …
英语翻译在每月班委会上汇报本职工作开展情况和下一阶段工作打算.上体育课时负责整队和体育器具的领发和收 2020-11-10 …
算法设计题:1、设有一个由正整数组成的单链表,编写完成下列功能的算法:①找出最小值结点,且输出该数值 2020-12-05 …
写一篇有关英语历史的英语作文,写得好一定加分!能写多少写多少,就算写不出来英文,中文也好啊,我可以去 2021-01-08 …