您好,登錄后才能下訂單哦!
棧是一種具有從宏觀上來看是“先進后出”功能特點的數據結構。可以由數組或者鏈表來實現。
其實現原理是從“一端”操作,導致先存儲的數據最后被取出。有棧頂、棧底等因素組成。在《C語言,好爽》第7版(2017年)第76集:棧的代碼實現之數組方案,中對棧的內存實現原理進行了詳解。這里只從宏觀上來理解,以及相關代碼如何實現。
其結構體類型為:
#define N 30
struct _stack
{
int top;
int data[N];
};
typedef struct _stack mystack;
對棧的操作通常有初始化、判斷棧空、棧滿,入棧,操作,清空等操作。這里分別實現:
調用代碼:
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("出棧成功,出棧的數據為:%d", output_value);
}
else
{
printf("出棧失敗");
}
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出棧成功,出棧的數據為:%d", output_value);
}
else
{
printf("出棧失敗");
}
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出棧成功,出棧的數據為:%d", output_value);
}
else
{
printf("出棧失敗");
}
show(&ms);
system("pause");
return 0;
}
測試結果:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。