目錄
堆疊是只能在一端增刪元素的表結構,該位置稱為棧頂堆疊的基本運算是壓入和彈出,前者相當於插入,而後者則是刪除最後插入的元素,形成後進先出的運算規則最後插入的元素在被彈出之前可以作為棧頂被外界訪問從空棧中彈出,或向滿棧中壓入,都被認為是一種錯誤
順序棧鏈式棧
#include
#include
/*節點的結構*/
typedef struct node node_t;
/*棧的結構*/
typedef struct stack stack_t;
/*初始化棧*/
void stack_init(stack_t* stk)
/*壓棧操作*/
void stack_push(stack_t* stk, int data)
/*彈棧:將棧中資料彈入buf*/
void stack_pop(stack_t* stk, int buf, int size)
node_t* temp = stk->top;
buf[i] = stk->top->data;
stk->top = stk->topwww.cppcns.com->pnode;
stk->size--;
free(temp);
}
}/*刪除整個棧*/
void stack_deinit(stack_t* stk)
}/*從棧頂自上而下列印棧中所有資料*/
void print_stack(stack_t* stk)
for(node_t* node = stk->top;
node; node = node->pnode)
printf("\n");
}/*測試***/
#define n 30
int main(void)
print_stack(&stack);//列印棧中資料
//stack_deinit(&stack);
printf("開始彈棧!\n");
stack_pop(&swww.cppcns.comtack, buf, n);//彈棧
print_stack(&stack);
printf("取出的資料為:");
for(int i = 0; i < sizeof(buf) /
sizeof(buf[0]); ++i)
printf("\n");
return 0;
}
C語言實現棧(鏈式棧)
由於棧的插入 刪除操作只能在一端進行,而對於線性鍊錶來說,在首端插入或 刪除比在尾端要容易一些,所以,將線性鍊錶的首端作為棧頂端,即將頭指標作為棧頂指標。1 結構體 1 typedef struct nodenode 56 typedef struct my stackstack 2 初始化 1 s...
C 語言實現鏈式棧
鏈式棧是一種資料儲存結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在於它能夠克服用陣列實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指標空間用來存放指標域。棧是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底 push 最後的資料在棧頂 ...
! 順序棧與鏈式棧的C語言實現 !
基本操作 入棧 出棧 取棧頂元素 基本特性 先進後出 注意 棧本身不能遍歷,不能列印,我們在 中實現的列印只是為了檢查 的正確性 具體操作的詳細解釋在 中會有注釋。1.順序棧 在結構體內定義乙個變數以 使用malloc申請記憶體,從而實現將順序表的固定長度修改為可動態擴容 seqstack.h pr...