順序棧與鏈式棧

2021-09-25 05:53:34 字數 2066 閱讀 8668

棧(邏輯結構)

限制為只有乙個埠進出元素,就導致先進後出和特性。

順序棧(容量在限)、鏈式棧(可以無限容量)。

一般常用於,表示式解析,記憶體管理(函式的呼叫提供支援)。

順序棧:

#include #include #include #define type int

typedef struct stack

stack;

// 建立

stack* creat_stack(size_t cal);

// 銷毀

void destory_stack(stack* stack);

// 入棧

bool push_stack(stack* stack,type data);

// 出棧

bool pop_stack(stack* stack);

// 棧空

bool empty_stack(stack* stack);

// 棧滿

bool full_stack(stack* stack);

// 棧頂

type* top_stack(stack* stack);

int main()

printf("------------------------\n開始出棧:\n");

for(int i=0; i<15; i++)

}// 建立

stack* creat_stack(size_t cal)

// 銷毀

void destory_stack(stack* stack)

// 入棧

bool push_stack(stack* stack,type data)

// 出棧

bool pop_stack(stack* stack)

// 棧空

bool empty_stack(stack* stack)

// 棧滿

bool full_stack(stack* stack)

// 棧頂

type* top_stack(stack* stack)

鏈式棧:

#include #include #include #define type int

typedef struct node

node;

node* creat_node(type data)

typedef struct stack

stack;

// 建立

stack* creat_stack(void);

// 銷毀

void destory_stack(stack* stack);

// 棧空

bool empty_stack(stack* stack);

// 入棧

void push_stack(stack* stack,type data);

// 出棧

bool pop_stack(stack* stack);

// 棧頂

type* top_stack(stack* stack);

int main()

printf("-----------------\n");

for(int i=0; i<10; i++)

destory_stack(stack);

}// 建立

stack* creat_stack(void)

// 銷毀

void destory_stack(stack* stack)

// 棧空

bool empty_stack(stack* stack)

// 入棧

void push_stack(stack* stack,type data)

// 出棧

bool pop_stack(stack* stack)

// 棧頂

type* top_stack(stack* stack)

棧 棧 鏈式棧,順序棧,共享棧

棧也是一種線性表結構,只不過棧的操作是受限的,它的特點就是在棧頂方向新增新的元素,且刪除元素也只能從棧頂方向刪除。因此棧是一種lifo 後進先出 特性的資料結構。壓棧 新的元素放入棧的操作。出棧 從棧中移除乙個元素的操作。因為棧是一種線性結構,所以可以通過前面所學的鍊錶和順序表作為內部實現。我們可以...

順序棧和鏈式棧

順序棧 採用順序儲存結構的棧 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...