簡單順序棧和鏈式堆疊的功能實現

2021-08-16 19:48:58 字數 2625 閱讀 1240

2018/3/12

資料結構

1.棧

1.堆疊是一種特殊的線性表,遵循先進後出的原則,可以看做手槍的彈夾一樣,先進的子彈反而最後出

2.棧的主要型別:順序棧(運算元組操作),鏈棧(操作指標)

3.棧由於是一種特殊的線性表,因此可以仿造線性表的操作方式,但是在插入和刪除時要小心,在表的一側進行操作

4.棧的主要操作方式

4-1:新建棧(init_stack)

4-2:進棧(push)

4-3:出棧(pop)

4-4:判斷是否為空(isnotempty)

4-5:取棧頂元素(stacktop)

4-6:棧的刪除(destory)

2.順序棧的操作技巧

//標頭檔案

//順序棧的簡單操作

#include#include#define maxsize 100

struct sqstack

;//建立棧

int initstack(struct sqstack*s)

//入棧

int pushstack(struct sqstack *s, int e)

else }

//出棧

int popstack(struct sqstack *s, int *e)

else }

//取棧頂元素

int stacktop(struct sqstack *s, int *n)

else }

int stacknotempty(sqstack s)

else

return 1;

}//原始檔

#include"sqstack.h"

#include#includevoid main()

else

printf("棧頂元素為%2d\n", n);

printf("\n依次出棧的情況如下\n:");

while (stacknotempty(s))

system("pause");

}

鏈棧的使用

//鏈棧的簡單使用
/*標頭檔案*/

//鏈棧和普通單鏈表的區別無非是插入和刪除在棧頂

#include#includestruct stack

;struct stack * init_stack(struct stack *);//初始化

struct stack * pushstack(struct stack *head,int x);//入棧

void disp_stack(struct stack *);//顯示鏈棧

int count_stack(struct stack *);//計算鏈棧的資料個數

int popstack(struct stack *, int *d);//出棧

int stacktop(struct stack *, int*);//取棧頂元素

void destorystack(struct stack*);//破壞棧

//初始化鏈棧

struct stack * init_stack(struct stack *head)

//顯示鏈棧

void disp_stack(struct stack *head)

} printf("\n");

}//計算鏈棧中的元素

int count_stack(struct stack *head)

return k;

}//入棧

struct stack * pushstack(struct stack *head, int x)

//出棧

int popstack(struct stack *head, int *d)//出棧,用d將引數帶回

/*刪除操作*/

head->next = p->next;

*d = p->data;

free(p);

printf("%5d", *d);

}/*取棧頂元素*/

int stacktop(struct stack *head, int *num)

*num = p->data;

return 1;

}//破壞棧

void destorystack(struct stack*head)

printf("刪除成功");

}//原始檔

//鏈棧的使用

/*鏈棧和線性表的區別就是在插入和刪除的時候要在同一側進行操作*/

#include#include#include"linkstackpractice.h"

void main()

destorystack(head);

system("pause");

}

注意事項:由於c語言和pascal語言的標準不一樣,使用時注意從0開始還是從1開始

順序棧和鏈式棧

順序棧 採用順序儲存結構的棧 push pop peek 方法的時間複雜度為o 1 當需要擴充棧容量時push 方法的時間複雜度為o n package com.lzw.demo.stacktest public inte ce sstack package com.lzw.demo.stackte...

順序棧和鏈式棧

相信大家對棧都不陌生,棧作為一種基礎的資料結構,在很多地方都會用到,在這裡整理一下順序棧和鏈式棧的一些基礎操作。pragma onc define max size 10 class seqstack seqstack 判斷棧滿 bool full 判斷棧空 bool empty 入棧 void p...

順序棧 鏈式棧的python實現

棧是一種操作受限的線性表資料結構,特點是只能在一端進行插入和刪除操作,操作順序是先進後出,後進先出 棧根據實現方式可以分為順序棧和鏈式棧,順序棧是用陣列來實現,鏈式棧是用鍊錶來實現 順序棧的出棧操作的只涉及尾端的彈出操作,時間複雜度為o 1 而入棧操作,當插入的操作在順序棧的最大空間時,是o 1 當...