棧的鏈式儲存

2021-09-09 06:37:36 字數 2078 閱讀 6208

線性表的順序儲存來模擬棧時,在尾部新增或者刪除元素,不會涉及到陣列的元素大量移動

用線性表的鏈式儲存來模擬棧的線性儲存,在頭部新增或刪除,不用從頭到尾遍歷

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...