【摘要】在計算機領域,堆疊是乙個不容忽視的概念,堆疊是兩種資料結構。堆疊都是一種資料項按序排列的資料結構,只能在一端(稱為棧頂(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...