您好,登錄后才能下訂單哦!
棧是一種具有從宏觀上來看是“先進(jìn)后出”功能特點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。可以由數(shù)組或者鏈表來實(shí)現(xiàn)。
其實(shí)現(xiàn)原理是從“一端”操作,導(dǎo)致先存儲(chǔ)的數(shù)據(jù)最后被取出。有棧頂、棧底等因素組成。在《C語言,好爽》第7版(2017年)第76集:棧的代碼實(shí)現(xiàn)之?dāng)?shù)組方案,中對(duì)棧的內(nèi)存實(shí)現(xiàn)原理進(jìn)行了詳解。這里只從宏觀上來理解,以及相關(guān)代碼如何實(shí)現(xiàn)。
其結(jié)構(gòu)體類型為:
#define N 30
struct _stack
{
int top;
int data[N];
};
typedef struct _stack mystack;
對(duì)棧的操作通常有初始化、判斷??铡M,入棧,操作,清空等操作。這里分別實(shí)現(xiàn):
調(diào)用代碼:
int main() {
mystack ms;
init(&ms);
int flag = 0;
int value = 0;
value = 0;
flag = push(&ms, value);
if (flag)
{
printf("%d 入棧成功", value);
}
else
{
printf("%d 入棧失敗", value);
}
value = 1;
flag = push(&ms, value);
if (flag)
{
printf("%d 入棧成功", value);
}
else
{
printf("%d 入棧失敗", value);
}
value = 2;
flag = push(&ms, value);
if (flag)
{
printf("%d 入棧成功", value);
}
else
{
printf("%d 入棧失敗", value);
}
show(&ms);
//彈出棧
int output_value = 0;
int output_flag = 0;
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出棧成功,出棧的數(shù)據(jù)為:%d", output_value);
}
else
{
printf("出棧失敗");
}
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出棧成功,出棧的數(shù)據(jù)為:%d", output_value);
}
else
{
printf("出棧失敗");
}
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出棧成功,出棧的數(shù)據(jù)為:%d", output_value);
}
else
{
printf("出棧失敗");
}
show(&ms);
system("pause");
return 0;
}
測(cè)試結(jié)果:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。