企業級資料結構 棧的鏈式儲存設計與實現

2021-06-28 07:45:19 字數 2173 閱讀 7823

鏈式棧是一種特殊的鍊錶,下面實現的**是基於鍊錶而來的,請參考前幾篇的部落格

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)

測試.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));

//刪除棧中所有元素

企業級棧的鏈式儲存

ifndef linkstack h define linkstack h include include include 鏈式棧的結點 typedef struct linknode linknode 鏈式棧 typedef struct linkstack linkstack 初始化函式 lin...

《資料結構 棧》鏈式儲存

一 鏈式儲存 和 順序結構 對比?棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1 如果棧的數量可預知,則使用順序棧,否則,則使用鏈棧 鏈棧 要求每個元素都有指標域,增加了記憶體開銷,但對於長度無限制。二 棧 鏈式結構 棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1...

資料結構 棧 棧的鏈式儲存結構

資料結構 棧 棧的鏈式儲存結構 用頭插法建立的鏈棧,棧頂元素為s next所指結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnode linkstack void ...