鍊錶是帶頭結點的. 每次執行入棧操作, 都是把資料壓入第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為鍊錶中的節...