嵌入式day17

棧是限制在一端進(jìn)行插入和刪除操作的線性表(俗稱堆棧),允許進(jìn)行操作的一端稱為“棧頂”戈轿,另一固定端稱為“棧底”,當(dāng)棧中沒有元素時稱為“空椪笞樱”思杯。特點(diǎn):先進(jìn)后出(LIFO)。

基本運(yùn)算:

  • 創(chuàng)建空棧:CreateStack(len)

  • 清空棧:ClearStack(S)

  • 判斷是否椖咏空:EmptyStack(S)

  • 判斷是否棧滿:FullStack(S)

  • 元素進(jìn)棧:PushStack(S)

  • 元素出棧:PopStack(S)

  • 取棧頂元素:GetTop(S)

順序棧:它是順序表的一種智蝠,具有順序表同樣的存儲結(jié)構(gòu),由數(shù)組定義奈梳,配合用數(shù)組下標(biāo)表示的棧頂指針top(相對指針)完成各種操作杈湾。

typedef int data_t;     //定義棧中數(shù)據(jù)元素的數(shù)據(jù)類型
typedef struct
{
 data_t *data;    //用指針指向棧的存儲空間
 int maxlen;      //當(dāng)前棧的最大元素個數(shù)
 int top;      //指示棧頂位置(數(shù)組下標(biāo))的變量
}seqstack_t;               //順序棧類型定義

創(chuàng)建棧

seqstack_t *CreateStack(int len)
{
 seqstack_t *ss;
 ss = (seqstack_t *)malloc(sizeof(seqstack_t));
 ss->data = (data_t *)maloc(sizeof(data_t) *len)
 ss->top = -1;
 ss->maxlen = len;
 return ss;
}

清空棧

ClearStack(seqstack_t *S)
{
 S->top = -1
}

判斷棧是否空

int EmptyStack(seqstack_t *S)
{
 return (S->top == -1 ? 1:0);
}

進(jìn)棧

void PushStack(seqstack_t *S, data_t x)
{
 if(S->top == NULL){
 printf("overflow!\n");
 return;
 }
 else{
 S->top++;
 S->data[S->top] = x;
 }
 return ;
}

鏈?zhǔn)綏?/h2>

插入操作和刪除操作均在鏈表頭部進(jìn)行,鏈表未卜就是棧底攘须,棧頂指針就是頭指針漆撞。

typedef int data_t;                               //定義棧中數(shù)據(jù)元素的數(shù)據(jù)類型
typedef struct node_t
{
 data_t data;                                       //數(shù)據(jù)域
 struct node_t *next;                      //鏈接指針域
}linkstack_t;                                         //鏈棧類型定義

創(chuàng)建空棧

linkstack_t *CreateLinkstack()
{
 linkstack_t *top;
 top = (linkstack_t *)malloc(sizeof(linkstack_t));
 top->next = NULL;
 return top;
}

判斷是否是空棧

int EmptyStack(linkstack_t *top)
{
 return (top->next == NULL ? 1:0)
}

入棧

void PushStack(linkstack_t *top, data_t x)
{
 linkstack_t *p;            //定義輔助指針
 p = (linkstack_t *)malloc(sizeof(linkstack_t));            //指向新結(jié)點(diǎn)
 p->data = x;                                       //將數(shù)據(jù)存入新結(jié)點(diǎn)的數(shù)據(jù)域中
 p->next = top->next;
 top->next = p;       //新結(jié)點(diǎn)插入原棧頂之前
 reurn;
}

隊(duì)列概念及特征

隊(duì)列概念:隊(duì)列是限制在兩端進(jìn)行插入操作和刪除操作的線性表,允許進(jìn)行存入操作的一端稱為“隊(duì)尾”于宙,允許進(jìn)行刪除操作的一端稱為“隊(duì)頭”浮驳。當(dāng)線性表中沒有元素時,稱為“空對”捞魁。

特點(diǎn):先進(jìn)先出(FIFO)

隊(duì)列的特征:

  1. 數(shù)據(jù):

    對于非空的隊(duì)列至会,表頭沒有直接前驅(qū),表尾沒有直接后繼谱俭,其他有且僅有一個直接前驅(qū)和一個直接后繼奉件。

  2. 操作

    只允許在表尾插入數(shù)據(jù),在表頭刪除數(shù)據(jù)昆著。

規(guī)定:

front:始終存放在表頭前一個位置的下標(biāo)

rear:始終存放隊(duì)尾的下標(biāo)

C語言中:

結(jié)構(gòu)體——封裝數(shù)據(jù)

函數(shù)——封裝代碼

隊(duì)列的順序存儲

typedef int data_t;             //定義隊(duì)列中數(shù)據(jù)元素的數(shù)據(jù)類型
#define MAXSIZE 64          //定義隊(duì)列的容量
typedef struct
{
 data_t data[MAXSIZE];   //用數(shù)組作為隊(duì)列的儲存空間
 int front, rear;                  //指示隊(duì)頭前一個位置和隊(duì)尾位置的指針
}sequeue;                              //順序隊(duì)列類型定義
sequeue *sq;                      //定義指向順序隊(duì)列的指針

順序隊(duì)列基本算法分析

  • 初始化

    1. 申請順序隊(duì)列的空間

    2. 初始化隊(duì)頭和隊(duì)尾指針front = rear = -1;

  • 插入

  • 刪除

  • 是否空

  • 是否滿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末县貌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凑懂,更是在濱河造成了極大的恐慌煤痕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件接谨,死亡現(xiàn)場離奇詭異摆碉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)脓豪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門巷帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跑揉,你說我怎么就攤上這事锅睛〔壕蓿” “怎么了历谍?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵现拒,是天一觀的道長。 經(jīng)常有香客問我望侈,道長印蔬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任脱衙,我火速辦了婚禮侥猬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捐韩。我一直安慰自己退唠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布荤胁。 她就那樣靜靜地躺著瞧预,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仅政。 梳的紋絲不亂的頭發(fā)上垢油,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音圆丹,去河邊找鬼滩愁。 笑死,一個胖子當(dāng)著我的面吹牛辫封,可吹牛的內(nèi)容都是我干的硝枉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼倦微,長吁一口氣:“原來是場噩夢啊……” “哼檀咙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起璃诀,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤弧可,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后劣欢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棕诵,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年凿将,在試婚紗的時候發(fā)現(xiàn)自己被綠了校套。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡牧抵,死狀恐怖笛匙,靈堂內(nèi)的尸體忽然破棺而出侨把,到底是詐尸還是另有隱情,我是刑警寧澤妹孙,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布秋柄,位于F島的核電站,受9級特大地震影響蠢正,放射性物質(zhì)發(fā)生泄漏骇笔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一嚣崭、第九天 我趴在偏房一處隱蔽的房頂上張望笨触。 院中可真熱鬧,春花似錦雹舀、人聲如沸芦劣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虚吟。三九已至,卻和暖如春娱俺,著一層夾襖步出監(jiān)牢的瞬間稍味,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工荠卷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留模庐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓油宜,卻偏偏與公主長得像掂碱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子慎冤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容