資料結構學習之堆疊(順序儲存)

2021-07-03 09:14:44 字數 2682 閱讀 7452

【摘要】在計算機領域,堆疊是乙個不容忽視的概念,堆疊是兩種資料結構。堆疊都是一種資料項按序排列的資料結構,只能在一端(稱為棧頂(top))對資料項進行插入和刪除。在微控制器應用中,堆疊是個特殊的儲存區,主要功能是暫時存放資料和位址,通常用來保護斷點和現場。要點:堆,佇列優先,先進先出[1] 。棧,先進後出(first-in/last-out)。

其實,堆疊的屬性主要表現在下面兩個方面:

(1)堆疊的資料是先入後出

(2)堆疊的長度取決於棧頂的高度

(1) 設計堆疊節點

typedef struct _stack_node

stack_node;

(2)建立堆疊

stack_node* alloca_stack(int number)

memset(pstacknode->pdata, 0, sizeof(int) * number);

pstacknode-> length = number;

pstacknode-> top= 0;

return pstacknode;

}

(3)釋放堆疊

status free_stack(const stack_node* pstacknode)

(4)堆疊壓入資料

status stack_push(stack_node* pstacknode, int value)

(5)堆疊彈出資料

status stack_pop(stack_node* pstacknode, int* value)

(6)統計當前堆疊中包含多少資料

int count_stack_number(const stack_node* pstacknode)

全部**如下:

//順序儲存

//written by zp1015

#include "stdafx.h"

#include

#include

#include

struct stack_node

;struct stack_node* alloc_stack(int stacksize)

memset(pstacknode, 0, sizeof(struct stack_node));

pstacknode->pdata = (int *)malloc(sizeof(int)*stacksize);

if(null == pstacknode->pdata)

printf("%d\n",pstacknode->pdata);

memset(pstacknode->pdata, 0, sizeof(int) * stacksize);

pstacknode->top= -1; /*初始化從0開始*/

pstacknode->stacklenmax = stacksize;

return pstacknode;

malloc_failed:

free(pstacknode);

return null;

}int free_stack(struct stack_node* pstacknode)

printf("%d\n",pstacknode->pdata);

printf("[%d] %d\n",__line__,pstacknode->pdata[2]);

free(pstacknode->pdata);

free(pstacknode);

return0;}

int stack_push(struct stack_node* pstacknode, int value)

/*2.棧滿,不能壓入元素*/

if(pstacknode->top == pstacknode->stacklenmax-1)

return -1;

printf("%d\n",pstacknode->top);

pstacknode->pdata[++pstacknode->top] = value;

return0;}

int stack_pop(struct stack_node* pstacknode, int* value)

int count_stack_number(struct stack_node* pstacknode)

void print_stack_node(struct stack_node *pstacknode)

/*2.輸入的鏈式堆疊為空*/

if(-1 == pstacknode->top)

struct stack_node *pstacknodetemp = pstacknode;

int count = 0;

while(count <= pstacknode->top)

printf("\n");

}int main()

print_stack_node(pstacknode);

free_stack(pstacknode);

getchar();

getchar();

return

0;}

資料結構學習之 堆疊

堆疊 順序儲存 define maxsize 10 typedef int elemtype struct stack 1.判斷堆疊是否為空 int emptyst struct stack s 2.判斷堆疊是否已滿的函式 int fullst struct stack s 3.元素入棧 void ...

資料結構學習堆疊

走迷宮程式 原理是來自於 資料結構 c語言 清華大學出版社關於堆疊的章節。具體的實現 是自己寫的。目前有一些還沒有完善的地方 1 不知道是為什麼處理時會出現地圖座標的x,y對調的情況。通過修改讀入和輸出的資訊糊弄過去orz。2 不能成功查詢時,返回時空指標 設計時是這樣的 可是不能輸出notfoun...

資料結構之堆疊的順序儲存

堆疊擁有兩種儲存方式 順序儲存和鏈式儲存。本文介紹堆疊了順序儲存方式。堆疊簡稱為棧,是線性表的一種特殊表現形式。堆疊只能夠在表的一端進行插入 刪除操作,允許操作的一端稱為棧頂,不允許操作的一端稱為棧底。棧的乙個一定要記住的特點是 先進後出!下圖表示了堆疊的順序儲存方式。假設用乙個長度為5的陣列a 5...