國嵌資料結構學習之棧的鏈式實現

2021-08-20 14:59:35 字數 1888 閱讀 5163

棧的鏈式結構是用以前實現的可復用的單鏈表實現的,和棧的順序結構區別僅僅在儲存結構方面

實現**:

定義的標頭檔案:

#ifndef _linkstack_h_

#define _linkstack_h_

typedef void linkstack;

typedef struct _tag_linkstacknode linkstacknode;

struct _tag_linkstacknode

;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

實現的c檔案:

#include "linkstack.h"

#include "linklist.h"

#include #include typedef struct _tag_linkstack

tlinkstacknode;

//建立乙個鏈棧的頭節點(相當於鍊錶的頭節點)

linkstack *linkstack_create()

//銷毀乙個鏈棧

void linkstack_destroy(linkstack *stack)

//清空鏈棧

void linkstack_clear(linkstack *stack)

} //壓棧 (從頭部插入)

int linkstack_push(linkstack *stack,void *item)

if( !ret )

return ret;

}//彈棧

void *linkstack_pop(linkstack *stack)

return ret;

}//得到棧頂元素

void *linkstack_top(linkstack *stack)

return ret;

}//得到棧的大小

int linkstack_size(linkstack *stack)

測試**:

#include #include "linkstack.h"

int main(int argc, char *argv)

; int i;

linkstack *stack = linkstack_create();

for(i=0; i< 10; i++)

printf("top:%d\n",*(int*)linkstack_top(stack));

printf("length:%d\n",linkstack_size(stack));

while(linkstack_size(stack) > 0)

linkstack_destroy(stack);

printf("press enter to continue ...");

getchar();

return 0;

}

國嵌資料結構學習之佇列

佇列的定義 佇列是一種特殊的線性表 隊頭 front 取出資料元素的一端 隊尾 rear 插入資料元素的一端 注意 佇列不予許在中間部位進行操作 應用 銀行的取號排隊 佇列的性質 佇列的一些常用操作 建立佇列 銷毀佇列 清空佇列 進佇列出佇列 獲取對頭元素 獲取佇列的長度 佇列的順序儲存實現 實現 ...

資料結構學習 鏈式棧 Java實現

棧抽象資料結構 棧介面,描述棧抽象資料型別,泛型引數t表示資料元素的資料型別 package com.clarck.datastructure.stack 棧抽象資料結構 棧介面,描述棧抽象資料型別,泛型引數t表示資料元素的資料型別 author clarck param public inte c...

資料結構學習 鏈式棧的C語言實現

幾個概念 計算機中的儲存資料結構主要分為連續儲存結構和不連續儲存結構,其中連續儲存結構也稱為線性表,不連續儲存結構也稱為鏈式表。鏈式結構簡單的說就是不連續記憶體的陣列。棧作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料...