深入了解C語(yǔ)言棧的創(chuàng)建
棧:是限定僅在表尾進(jìn)行插入和刪除操作的線性表!
棧的結(jié)構(gòu)定義如下:
typedef struct Stack
{
SLDataType *base;//棧底元素的地址
int top;//棧頂元素的位置
} Stack;
棧的初始化如下:
SLDataType initStack(Stack &S)
{
S.base=(SLDataType*)malloc(N*sizeof(SLDataType));//申請(qǐng)棧元素的存儲(chǔ)空間
if(S.base==NULL)
return -1;
S.top=0;
return 1;
}
棧元素的輸入接口:
SLDataType pushStack(Stack &S,int e)//輸入棧的元素
{
if(S.top==N)
return 0;
S.base[S.top]=e;
S.top++;
return 1;
}
完整代碼如下:
#include<stdio.h>
#include<stdlib.h>
#define N 30
typedef int SLDataType;
typedef struct Stack
{
SLDataType *base;//棧底元素的地址
int top;//棧頂元素的位置
} Stack;
SLDataType initStack(Stack &S)
{
S.base=(SLDataType*)malloc(N*sizeof(SLDataType));
if(S.base==NULL)
return -1;
S.top=0;
return 1;
}
SLDataType pushStack(Stack &S,int e)//輸入棧的元素
{
if(S.top==N)
return 0;
S.base[S.top]=e;
S.top++;
return 1;
}
void printStack(Stack &S)
{
int i;
i=0;
while(i<S.top)
{
printf("%d ",S.base[i]);
i++;
}
printf("\n");
}
int main()
{
Stack S;
int i,n,m;//n是入棧的個(gè)數(shù)
if(initStack(S)==1)
printf("棧初始化成功\n");
printf("入棧的元素個(gè)數(shù)為:");
scanf("%d",&n);
i=1;
printf("輸入要入棧的元素:");
while(i<=n)
{
scanf("%d",&m);
if(pushStack(S,m)==0)
{
printf("%d入棧失敗!\n",m);
break;
}
i++;
}
printf("棧中的元素有: ");
printStack(S);//打印棧中的元素
return 0;
}
運(yùn)行結(jié)果如下:

總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
c語(yǔ)言中exit和return的區(qū)別點(diǎn)總結(jié)
小編今天給大家整理了關(guān)于c語(yǔ)言中exit和return的不同點(diǎn)及相關(guān)基礎(chǔ)知識(shí)點(diǎn),有興趣的朋友們可以跟著學(xué)習(xí)下。2021-10-10
C++中函數(shù)模板與類模板的簡(jiǎn)單使用及區(qū)別介紹
這篇文章介紹了C++中的模板機(jī)制,包括函數(shù)模板和類模板的概念、語(yǔ)法和實(shí)際應(yīng)用,函數(shù)模板通過(guò)類型參數(shù)實(shí)現(xiàn)泛型操作,而類模板允許創(chuàng)建可處理多種數(shù)據(jù)類型的類,文章還討論了模板的關(guān)鍵區(qū)別、注意事項(xiàng)以及它們?cè)趯?shí)際編程中的應(yīng)用,感興趣的朋友一起看看吧2025-03-03
C++11?成員函數(shù)作為回調(diào)函數(shù)的使用方式
這篇文章主要介紹了C++11?成員函數(shù)作為回調(diào)函數(shù)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C++中對(duì)象的常引用、動(dòng)態(tài)建立和釋放相關(guān)知識(shí)講解
這篇文章主要介紹了C++中對(duì)象的常引用、動(dòng)態(tài)建立和釋放相關(guān)知識(shí)講解,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
如何用C++實(shí)現(xiàn)雙向循環(huán)鏈表
本篇文章是對(duì)用C++實(shí)現(xiàn)雙向循環(huán)鏈表的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++ 中動(dòng)態(tài)鏈接庫(kù)--導(dǎo)入和導(dǎo)出的實(shí)例詳解
這篇文章主要介紹了C++ 中動(dòng)態(tài)鏈接庫(kù)--導(dǎo)入和導(dǎo)出的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
解決c++?error:crosses?initialization?of?問(wèn)題
最近在寫代碼的時(shí)候,碰到了?crosses?initialization?of?...?的問(wèn)題,只因我在?switch?的某個(gè)?case?分支下定義了一個(gè)變量,于是乎便將這個(gè)問(wèn)題整理一下,需要的朋友可以參考下2023-03-03

