求助求助,急急急,怎么写,大神帮帮忙,求这个程序补充内容

[复制链接]
查看11 | 回复1 | 2021-1-27 05:27:05 | 显示全部楼层 |阅读模式
实验四顺序栈的实现
一、实验目的
1.掌握栈的顺序存储结构
2.实现栈的基本操作
二、实验内容
1.初始化顺序栈;
2.进栈;
3.出栈;
4.取栈顶元素;
5.判断栈是否为空;
6.判断栈是否满。
三、程序实现
完成以下代码,并上机实现,将结果附于文件后:
#include
#include
#defineMaxSize100
typedefintdataType;
typedefstruct{
dataTypedata[MaxSize];
inttop;
}SeqStack;
//创建顺序栈
SeqStack*createStack()
{
SeqStack*t=(SeqStack*)malloc(sizeof(SeqStack));
t->top=-1;
returnt;
}
//判断栈是否为空
//判断栈是否满
//元素x进栈
//出栈
//取栈顶元素的值
//求栈的元素个数

intmain()
{
SeqStack*s=createStack();//创建顺序栈
push(s,80);
push(s,90);
pop(s);
push(s,70);
printf("栈有%d个元素,栈顶元素为:%d\n",size(s),top(s));
}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
示例://
//
//
/*
*栈操作
**/
#include
#include
#defineN50栈大小
//结构体栈
typedefstructstack
{
inttop;//栈顶位置
intdata[N];//数据
}STACK;
//是否为空
intisEmpty(STACK*stack)
{
if(stack->top==-1)
{
return1;
}
return0;
}
//是否已满
intisFull(STACK*stack)
{
if(stack->top==N-1)
{
return1;
}
return0;
}
//设为空
voidsetEmpty(STACK*stack)
{
stack->top=-1;
}
//压栈
intpush(STACK*stack,intdata)
{
if(isFull(stack))
{
printf("栈已满\n");
return-1;
}
stack->top+=1;
stack->data[stack->top]=data;
}
//弹栈
intpop(STACK*stack)
{
if(isEmpty(stack))
{
printf("栈已空");
return-1;
}
intnum=stack->data[stack->top];
stack->top-=1;
//printf("top=%d\n",stack->top);
returnnum;
}
voidtest()
{
printf("栈结构体类型大小:%d\n",sizeof(STACK));
printf("分配内存,并初始化:\n");
STACK*stack=(STACK*)calloc(1,sizeof(STACK));//calloc分配内存:元素个数元素大小
if(stack==NULL)
{
printf("内存分配失败\n");
return;
}
printf("内存分配成功,地址为:%p\n",stack);
setEmpty(stack);
//压栈
for(inti=0;i
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行