可以的,先別被題目騙了,說是1,2,3,4為輸入序列,實際上只是按照這個順序執(zhí)行,并非一次性把1,2,3,4連續(xù)放進棧里面,什么情況下會有出棧為3,2,4,1呢?就是,先進棧1,2,3,然后3出棧,再2出棧,然后4進棧,4出棧,再1出棧,那么就滿足你提出的可能了。
目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計、鹽城網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
就用這堆函數(shù)就可以了,不懂再追問
#include
string.h
#define
MaxSize
100
int
mystack[MaxSize];/*
第0個單元保存現(xiàn)在的長度
*/
/*
初始化函數(shù)
*/
void
init_stack(int*
stack){
memset(stack,0,sizeof(stack));
}
/*
入棧函數(shù)
*/
void
push_back(int*
stack,int
num){
if(stack[0]MaxSize-1){
++stack[0];
stack[
stack[0]
]
=
num;
}
else{
printf("ERORR!\n");
}
}
/*
返回棧空間
*/
int
size(int*
stack){
return
stack[0];
}
/*
返回棧頂函數(shù)
*/
int
top(int*
stack){
if(stack[0]0){
return
stack[
stack[0]
];
}
else{
printf("ERORR!\n");
return
-1;
}
}
/*
出棧函數(shù)
*/
void
pop(int*
stack){
if(stack[0]0){
--stack[0];
}
else{
printf("ERORR!\n");
}
}
flag=Pop(S,e);這里不該這樣調(diào)用,直接使用flag=Pop(S,e);
函數(shù)定義int Pop(LinkStack S,SElemType e)里表示引用實參,也即是說使用e對象本身進行運算,而如果沒有則是使用e對象的拷貝進行運算