學習目標:堆疊的鏈式存盤實作
學習內容:
堆疊的代碼實作
1、 創建堆疊(無頭結點)
typedef struct LinkNode{
ElemType data;
struct LinkNode*pnext;
}PLStack*;
/*
typedef struct LinkStack{
PLinkNode* ptop = NULL;
PLinkNode *pbottom = NULL;
}LStack, PLStack*;
*/ //一般來說,不需要堆疊頂和堆疊底的指標
void main(){
PLStack LS;
InitLS(&LS);
return;
}
void InitLS(PLStack P){
//p = (PLStack)molloc(sizeof(LinkNode)); //一般來說,鏈堆疊不必有頭結點,需要的話,加上這一句
/* if(p->ptop == NULL){
printf("分配記憶體失敗\n");
exit(-1);
}
*/
p->pnext = NULL;
}
2、 壓堆疊、出堆疊(無頭結點)
壓堆疊(有無頭結點一樣):思路和鏈表頭插法一樣
void put(PLStack p, int x)
{
//LinkNode new;不能這么寫,因為執行這個函式就會回收該變數的空間,要用molloc動態分配才行
LinkNode *pnew = (LinkNode*)malloc(sizeof(LinkNode));
//下面三句,頭插法思想
pnew->data = x;
pnew->pnext = p->pnext;
p->pnext = pnew;
return;
}
bool pop(PLStack p)
{
if(empty(p) == 1){
printf("堆疊為空,無法出堆疊");
return false;
}
else{
LinkNode *t = p;
p = p->pnext;
free(t);
return true;
}
return
}
bool empty(PLStack p)
{
if(p->pnext == NULL){
return true;
}else{
return false;
}
}
學習時間:
1、 2021-6-7 13:30-14:00
2、2021-6-12 21:30-22:30
學習產出:
1、 資料結構視頻3.1.3
2、堆疊可以有頭結點可以沒有,常用的是沒有頭結點,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287478.html
標籤:其他
上一篇:反轉字串(NC103/考察次數Top26/難度入門)
下一篇:字串函式和字符函式(二)
