//複雜的棧--鍊錶棧
#include#include
#define datatype int//
定義鍊錶棧資料型別
//定義鍊錶棧結構
struct
stacklink;
typedef
struct
stacklink stacklink;
//判斷棧是否為空
int isempty(stacklink *phead);
//進棧
stacklink * push(stacklink *phead, datatype num);
//出棧
stacklink * pop(stacklink *phead, stacklink *pout);
//清空
stacklink * setempty(stacklink *phead);
//遍歷棧中的資料
void findall(stacklink *phead);
//鍊錶棧容量無限大,但是代價是增加鍊錶遍歷成本
void
main()
printf("
\n******************************==\n");
//列印棧中的資料
findall(phead);
printf(
"\n******************************==\n");
//清空棧內元素
phead =setempty(phead);
//列印棧中的資料
findall(phead);
system(
"pause");
}//判斷棧是否為空
int isempty(stacklink *phead)
else}//
進棧stacklink * push(stacklink *phead, datatype num)
else
p1->pnext =p;
//這裡的phead->pnext會直接影響main()函式裡phead的值,因為phead->pnext本質上等於(*phead).pnext
//修改的是phead指標指向資料的值,而不是修改phead本身
}
return
phead;}//
遍歷棧中的資料
void findall(stacklink *phead)}//
出棧stacklink * pop(stacklink *phead, stacklink *pout)
else
//2.多個元素,找到倒數第二個元素
else
pout->data = phead->pnext->data;
//刪除棧中最後乙個元素
free(phead->pnext);
phead->pnext =null;
return
p; }
}}//
清空stacklink * setempty(stacklink *phead)
//最後刪除第乙個元素
C語言 棧 鍊錶
普通鍊錶的建立 用鍊錶構建一串數字,並輸入另乙個數插入其中。以及鍊錶的逆序。include include struct node 鍊錶的結構體建立 int main t head k head next scanf d s for i 0 i i else struct node x,y x he...
C語言鍊錶實現棧
鍊錶實現帶頭結點的棧,入棧用頭插法 環境codeblocks include include include typedef int elemtype typedef struct node node,linkstack 初始化棧 linkstack initstack linkstack s 入棧...
棧的鍊錶實現(C語言)
原始碼檔案位址 由前面 所述 鍊錶實現的棧在操作過程中頻繁的pop和push會伴隨著頻繁的malloc和free,伴隨著很大的系統開銷。基於此,在此實現中,通過實現乙個空閒節點鍊錶,將pop之後的鍊錶節點不釋放,而是放入空閒鍊錶freenodeptr中 當棧進行push操作的時候,先從空閒節點鍊錶中...