-
程序已经修正,可以运行成功,希望kutpbpb能帮到你!
#include
#include
#define maxsize 7
#define false -1
#define true 1
#define ok 1
#define error -1
typedef int datatype;
typedef struct node
datatype data[maxsize];
int top;
seqstack;
void push(seqstack *s,datatype x);
void setnull(seqstack *s);
int empty(seqstack *s);
datatype pop(seqstack *s);
int main()
datatype e;
seqstack *p;
p=(seqstack*)malloc(sizeof(seqstack));
int i,x;
setnull(p);
printf("please enter the number:");
for(i=0;itop);
empty(p);
e=pop(p);
printf("please print the pop value: %5d",e);
return 0;
void setnull(seqstack *s)s->top=-1;
int empty(seqstack *s)if(s->top>=0)
return false;
elsereturn true;
void push(seqstack *s,datatype x)if(s->top==maxsize-1)printf("overflow");
elses->top++;
s->data[s->top]=x;
datatype pop(seqstack *s)datatype e;
if(empty(s)!=-1)这里应该是一个不等号;
printf("underflow");
return null;
elsee=s->data[s->top];
s->top--;在这里,它应该首先保存,然后减去;
return e;
地图。 此数据在地图上为**,最终结果以地图上的最新数据为准。
-
修改以下更改:包括
#include
#define maxsize 7
#define false -1
#define true 1
#define ok 1
#define error -1
typedef int datatype;
typedef struct node
datatype data[maxsize];
int top;
seqstack;
void push(seqstack *s,datatype x);
seqstack *setnull(seqstack *s);
int empty(seqstack *s);
datatype pop(seqstack *s);
int main()
seqstack *p;
int i,x;
datatype dat;*注意这里 * p=(seqstack*)malloc(sizeof(seqstack));
setnull(p);
printf("please enter the number:");
for(i=0;i!=maxsize-1;i++)scanf("%d",&x);
push(p,x);
printf("please enter the number:");
empty(p);*注意,这句话似乎没有必要* dat=pop(p);
printf("%d",dat);
return 0;
seqstack *setnull(seqstack *s)s->top=-1;
return s;*注意事项*
int empty(seqstack *s)if(s->top>=0)
return false;
elsereturn true;
void push(seqstack *s,datatype x)if(s->top==maxsize-1)printf("overflow");
return null;*注意这里* elses->top++;
s->data[s->top]=x;
数据类型 pop(seqstack *s)if(empty(s)==true) *注意这里 *printf("underflow");
return null;
elses->top--;
return (s->data[s->top]);
-
你依次考虑堆栈的元素。
b,d,c,f,e,a
当每个元素不在堆栈中时,堆栈中有多少元素(包括自身)对应于这些值的最大值,即堆栈的最小容量。 因为如果小于此值,堆栈将无法容纳每个堆栈外元素所需的空间。
在这种情况下,最大值是元素。
d 出堆栈,一起。
d本身,有。
三个元素 a、c 和 d 都在堆栈中(b 已经不在堆栈中),所以这个问题的答案是。
-
根据出口和堆栈进入的顺序,分析如下:
一个在。 b 在。
B Out 要求至少 2 个容量
空调留给进入。
d 在。 d 出来。
c out 加上 a
需要至少 3 个容量
左 AE 进入。
F 英寸。 f 输出。
e 出。 一个出来。
E、F 加 A
需要至少 3 个容量
基于以上分析。
最小容量为 3 个即可。
-
显然,这是通过循环队列完成的。
在程序中,f = (i+1)%maxsize 表示获取最后一个元素的索引。 在此声明中:
1) maxsize:常量(最有可能是宏)表示队列中可以容纳的最大元素数。
2) (i+1) 是一个向下移动的索引(由于 i=q->front,因此 i+1 是队列顶部元素的索引)。
3) f=(i+1)%maxsize,使用余数运算实现环队列下标索引"回头",即,如果您移动到最后一个队列的最后一个位置(即,如果 i = maxsize-1),则 f=(i+1)%maxsize=0,自动返回到环形队列的开头。
-
循环队列,从队列头部到队列末尾的输出。
front;当团队的 head 元素不为空时,head 指针指向该元素; 当队列不为空时,如果 f = i,则尾部指针指向队列尾部元素的下一个位置; 这是顺序队列。
f = (i + 1) %maxsize;是循环队列。