-
程式已經修正,可以執行成功,希望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;是迴圈佇列。