企業級棧的鏈式儲存

2021-08-18 02:57:48 字數 1763 閱讀 6836

# ifndef linkstack_h

# define linkstack_h

# include # include # include //鏈式棧的結點

typedef struct linknode

linknode;

//鏈式棧

typedef struct linkstack

linkstack;

//初始化函式

linkstack* init_linkstack();

//入棧

void push_linkstack(linkstack* stack, linknode* data);

//出棧

void pop_linkstack(linkstack* stack);

//返回棧頂元素

linknode* top_linkstack(linkstack* stack);

//返回棧元素的個數

int size_linkstack(linkstack* stack);

//清空棧

void clear_seqstack(linkstack* stack);

//銷毀

void freespace_seqstack(linkstack* stack);

# endif

# include "linkstack.h"

//初始化函式

linkstack* init_linkstack()

//入棧

void push_linkstack(linkstack* stack, linknode* data)

if(data == null)

data->next = stack->head.next;

stack->head.next = data;

stack->size++;

}//出棧

void pop_linkstack(linkstack* stack)

if(stack->size == 0)

//第乙個有效結點

linknode* pnext = stack->head.next;

stack->head.next = pnext->next;

stack->size--;

}//返回棧頂元素

linknode* top_linkstack(linkstack* stack)

if(stack->size == 0)

return stack->head.next;

}//返回棧元素的個數

int size_linkstack(linkstack* stack)

return stack->size;

}//清空棧

void clear_seqstack(linkstack* stack)

stack->head.next = null;

stack->size = 0;

}//銷毀

void freespace_seqstack(linkstack* stack)

free(stack);

}# include "linkstack.h"

typedef struct person

person;

void test01()

//銷毀棧

freespace_seqstack(stack);

}int main(int argc, char *argv)

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

鏈式棧是一種特殊的鍊錶,下面實現的 是基於鍊錶而來的,請參考前幾篇的部落格 linkstack.h ifndef my linkstack h define my linkstack h typedef void linkstack linkstack linkstack create void l...

棧的鏈式儲存

線性表的順序儲存來模擬棧時,在尾部新增或者刪除元素,不會涉及到陣列的元素大量移動 用線性表的鏈式儲存來模擬棧的線性儲存,在頭部新增或刪除,不用從頭到尾遍歷 linkstack.h ifndef my linkstack h define my linkstack h typedef void lin...

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...