這裡我們說的是資料結構中的棧,是一種先進後出的一種資料管理方式,打個比方就是我們把衣服整理好疊進櫃子,最先折的衣服都放在最下面,等我們要穿的時候就會拿起最上面的那個衣服穿。
1.結構體定義
typedef struct link
node;
typedef struct stack
stack;
這裡需要注意的是bottom是棧底,top是棧頂,資料都是先放棧底,出去是棧頂的資料出去。
2.建立鍊錶和棧
stack *creat_stack()
node * creat_link(int n)
pre->next=null;
return head;
}
3.入棧void insert_link_to_stack(stack*q,node * head)
else
newp=newp->next;}}
入棧主要是移動top這個指標,跟佇列的rear指標一樣
4.出棧
void delete_stack(stack * q)
else
else
q->top=pnode;
q->top->next=null;}}
}
出棧也是移動top這個指標,首先我們是遍歷到top,然後再把top前面的乙個結點賦值給top,最後free 掉原來的top即可
5.獲得棧的長度
int getlength(stack *q)
while(pnode!=null)
return nlen;
}
6.列印棧的資料void print_stack(stack * q)
printf("data:");
while(pnode!=null)
// printf("%d",pnode->data);
}
主函式
void main()
**執行效果如下,可以看出,入棧是4 2 1 出了2次棧後,4還在,說明是先入後出
我對學習數學的感覺
我對學習數學的感覺 爬完山,與乙個同事談起學習數學。自覺自己也沒有什麼心得,在數學的海洋裡,我只能被它所淹沒。但作為乙個數學系畢業的學生我不能回答這個問題,又覺得對不起這個畢業證吧!只能把自己所認識的講出來吧。在他認識裡,他覺得在高中階段裡有個學習數學很好的同學的經驗 把課本多看幾次,把知識結構提取...
我對JS佇列的學習
佇列是遵循fifo 先進先出 原則的一組有序的項。佇列在尾部新增新元素,並從頂部移除元素。最新新增的元素必須排在佇列的末尾。在具體應用中通常用鍊錶或者陣列來實現。佇列的操作其實是和棧是差不多的,但是佇列只允許新資料在後端進行新增。1 建立佇列 宣告乙個類 function queue 需要乙個用於儲...
我自己對學習的理解
很多同學在納悶,為什麼覺得自己付出了很多,但是成績依然不理想?其實不同的人對於數學這門課的天份是不一樣的,有的同學付出的不多,但學到的相對比較多,有的則不然。不論怎樣,學習的路很長,不能以一時成敗就裹足不前,要放長線,向遠看,樹立自己的目標,日積月累,相信時間的積累,最後的成果是豐碩的。天下不可能有...