線性表的順序儲存來模擬棧時,在尾部新增或者刪除元素,不會涉及到陣列的元素大量移動
用線性表的鏈式儲存來模擬棧的線性儲存,在頭部新增或刪除,不用從頭到尾遍歷
linkstack.h
#ifndef _my_linkstack_h_
#define _my_linkstack_h_
typedef void linkstack;
linkstack* linkstack_create();
void linkstack_destroy(linkstack* stack);
void linkstack_clear(linkstack* stack);
int linkstack_push(linkstack* stack, void* item);
void* linkstack_pop(linkstack* stack);
void* linkstack_top(linkstack* stack);
int linkstack_size(linkstack* stack);
#endif //_my_linkstack_h_
linkstack.c
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "linkstack.h"
#include "linklist.h"
typedef struct _tag_linkstacknode
tlinkstacknode;
//我要建立乙個linkstack,準備用linklist去模擬實現
//相當於在 linkstack.c中寫 linklist庫的測試程式。。。。。。
linkstack* linkstack_create()
void linkstack_destroy(linkstack* stack)
void linkstack_clear(linkstack* stack)
return ;
}//向棧中放元素,相當於 向線性表中插入乙個元素
int linkstack_push(linkstack* stack, void* item)
pte->item = item;
//頭插法 ,向線性表中插入元素,只不過是插入元素的時候,需要構造業務節點而已。。。。。。
ret = linklist_insert(stack, (linklistnode *)(&pte->node),0 );
if (ret != 0)
return ret;
}void* linkstack_pop(linkstack* stack)
myitem = ptmp->item;
//注意向線性表中,插入元素的時,打造節點,分配記憶體;
//彈出元素時,需要釋放節點記憶體,不要忘記
if (ptmp != null)
return myitem;
}void* linkstack_top(linkstack* stack)
myitem = ptmp->item;
return myitem;
}int linkstack_size(linkstack* stack)
demo.c
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "linkstack.h"
void main()
printf("top: %d \n", *((int *)linkstack_top(stack)));
printf("size: %d \n", linkstack_size(stack));
//刪除棧中所有元素
while (linkstack_size(stack) > 0)
linkstack_destroy(stack);
system("pause");
}
鏈式儲存mysql 鏈棧 棧的鏈式儲存結構
前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...
棧順序儲存 鏈式儲存
1.棧的順序儲存之動態儲存 include include define ok 1 define false 0 define true 1 define stack init size 20 儲存空間初始分配量 define stackincrement 5 儲存空間分配增量 typedef in...
棧的鏈式儲存結構
棧的鏈式表示,即鏈棧。由於棧的操作是線性表操作的特例,因此鏈棧可以看成運算受限的單鏈表。其特點如下 鏈棧無棧滿問題,空間可擴充 插入和刪除僅在棧頂處執行 鏈式棧的棧頂在鏈頭 適合於多棧操作。stacklist.h include class listint int data listint link...