顧名思義這裡的棧是與煉表相掛鉤,因為鍊錶和棧有個共同的性質就是先進後出,所以寫法與鍊錶相似
1.寫出棧的資料結構
2.建立棧也就是初始化過程
3.寫出節點的資料結構(因為入棧前得要用東西可以入到棧裡面)
4.建立節點
5.入棧(也就是插入節點寫法與鍊錶相同)
6.獲取棧頂元素
7.出棧(也就是刪除節點寫法與鍊錶相同)
8.萬金油函式,判斷是否為空
#include
#include
#define null 0
struct node//節點資料結構型別
;//建立節點
struct node*
createnode
(int date)
struct stack //棧資料結構型別
;//建立棧
struct stack*
createstack()
//建立過程就是初始化過程
//插入節點
void
push
(struct stack* mystack,
int date)
//獲取棧頂元素
inttop
(struct stack* mystack)
return mystack->stacktop->date ;
}//出棧 就是鍊錶的刪除
void
pop(
struct stack* mystack)
else
}//萬金油函式判斷棧是不是為空
intempty
(struct stack* mystack)
intmain()
printf
("\n");
system
("pause");
return0;
}
剛開始對於資料結構很不熟悉,但是因為熟能生巧嘛,學會了單項鍊表和雙向鍊錶,在學習鏈式棧就輕鬆很多,也能馬上理解
同理可以得出鏈式佇列方法一樣
**如下
#include
#include
#define null 0
struct node
;struct node*
createnode
(int date)
struct queue
;struct queue*
createqueue()
void
push
(struct queue* myqueue,
int date)
//入隊
else
myqueue->size++;}
void
pop(
struct queue* myqueue)
//出隊
else
}int front (
struct queue* myqueue)
return myqueue->frontnode->date;
}int
empty
(struct queue* myqueue)
intmain()
printf
("\n");
system
("pause");
return0;
}
一一計畫(Day 2)雙向鍊錶
1.單向鍊錶因為只有乙個指標指向下乙個指標,所以只能從前往後找,速度慢 2.為了更迅速,於是就在加了乙個前指標,也就變成了雙向鍊錶 1 新節點的前指標指向上乙個節點 2 新 節點的後指標指向下乙個節點 3.兩者寫法基本相似,重點要畫圖理解雙向鍊錶的含義 include include define ...
一一計畫(Day 20)
淦 知識太少了,看別人的 看不懂,自己的 只能通過20 自己的思路 貪心 先搶救剩餘時間最少的建築,所以先從小到大排序,然後用sum來統計已經消耗的時間,滿足條件為 搶救改建的時間 已經消耗的時間是否大於搶救該建築所需要的時間 include void quicksort int a,int b,i...
一一計畫(Day 4)今日學習
原先報了英語口語的,為了以後能再找工作上提供一些幫助.自己也學習了一期課程,效果確實是有,但有點不喜歡他們表演的授課形式。原先的自己又報了後兩期的課程共1w 但現在發現精力不夠,而且價效比不是很高,因此我決定嘗試自學,採用自己與自己對話的方式以及看瑞克和莫蒂去模仿,同樣也能學習語音語調.一定要努力學...