堆疊的鍊錶實現

2022-03-03 05:34:11 字數 1290 閱讀 3845

鍊錶是帶頭結點的. 每次執行入棧操作, 都是把資料壓入第1個節點.

完整**如下:

#include #define true 1;

#define false 0;

typedef int elementtype;

struct s_stack ;

typedef struct s_stack stack;

typedef struct s_stack* ptr_stack;

// 函式宣告

ptr_stack createstack ();

void push (ptr_stack ptr, elementtype x);

void print (ptr_stack ptr);

elementtype pop (ptr_stack ptr);

int main ()

print(stackhead);

/* 入棧測試結束 */

/* 出棧測試開始 */

// stackhead = createstack();

elementtype popvalue = pop(stackhead);

printf("被彈出的元素的值是: %d\n", popvalue);

print(stackhead);

/* 出棧測試結束 */

return 0;

}// 建立空棧

ptr_stack createstack ()

// 入棧

void push (ptr_stack ptr, elementtype x)

// 列印

void print (ptr_stack ptr)

printf("\n");

printf("堆疊鍊錶的長度是: %d\n", length);

printf("\n");

}// 出棧

// 如果棧空返回 false

// 返回被pop的元素的值, 並把該元素從棧中移除

elementtype pop (ptr_stack ptr)

ptr_stack curnode; // 指向彈出元素

int curvalue; // 儲存彈出元素的值

curnode = ptr->next;

ptr->next = ptr->next->next;

curvalue = curnode->data;

free(curnode);

return curvalue;

}

鍊錶堆疊C實現

typedef int elementtype typedef structlist list makeempty void insert elementtype x,int i list ptrl if i 1 i ptrl last 2 for j ptrl last j i 1 j 將a i ...

用鍊錶實現堆疊

堆疊資料一種後進先出的資料結構,只能在一端 稱為棧頂 top 對資料項進行插入和刪除。基本的堆疊操作是push和pop,push是把乙個新值壓入堆疊的頂部,pop是把堆疊的頂部的值移除並返回這個值。堆疊只提供對它的棧頂值的訪問。堆疊很容易實現,可以用靜態陣列 動態陣列 鍊錶實現堆疊。本文介紹的是鍊錶...

堆疊的鍊錶方式實現

除了公式化即陣列的實現方式,堆疊還可以用鍊錶的方式實現,這種方式對空間利用率更高。在使用鍊錶來表示堆疊時,必須確定鍊錶的哪一端對應於棧頂。如果把鍊錶的右端作為棧頂,那麼可以利用鍊錶操作 i n s e r t n x 和d e l e t e n x 來實現堆疊的插入和刪除操作,其中 n為鍊錶中的節...