佇列在生活中十分常見,例如排隊買票就是乙個佇列,先排隊的人會先買到票,佇列就是乙個「先到先服務」的處理。
佇列一般包含三個元素:佇列中存放的資料,隊頭和隊尾兩個指標。出隊即讓隊頭指標++,即指標向後移動一位,資料即可出隊。類似的,資料入隊就讓隊尾指標++,即隊尾指標向後移動一位。
結構體的初始化:
struct lei
;lei x1, x2;
結構體初始化首先定義結構體的型別,就像c語言中的int、char一樣,只是結構體的型別是我們自己定義的;之後定義結構體裡面的元素,定義完之後在大括號後打上分號。之後再申明結構體變數的名稱。
定義結構體的同時也可以定義結構體的名字,例如:
struct lei
student1, student2;
/*解密qq號:解密規則為每次刪除佇列的第乙個數,將第二個數移到隊尾,直到資料刪完為止,把這些刪除的數連在一起就是qq號, 隊列為631758924*/
//1.先用陣列模擬佇列來實現操作
#include
intmain()
head =0;
tail = n;
while
(head < tail)
//當佇列不為空時執行操作
getchar()
;getchar()
;return0;
}//2.定義結構體來實現相關操作
#include
struct card //定義乙個card型的結構體,有三個元素,資料域、頭指標和尾指標
;int
main()
while
(a.head < a.tail)
getchar()
;getchar()
;return0;
}
棧與佇列有所不同,佇列是『先進先出』的處理;棧是『先進後出』的處理,棧是一種特殊的線性表,只允許在固定的一端進行操作,操作的那端稱為『棧頂』,棧的另一端稱為『棧底』。棧有順序棧和鏈棧,順序棧類似陣列,鏈棧類似於鍊錶。不含元素的棧稱為空棧。
//判斷一組資料是不是回文數。回文數就是正讀和反讀相同的一組字串行
#include
#include
intmain()
if(len %2==
0)else
if(len %2!=
0)for(i = next; i < len; i++
) top--;}
if(top ==0)
printf
("yes");
else
printf
("no");
getchar()
;getchar()
;return0;
}
鍊錶需要用到指標操作,先來了解指標。
簡單地講,c語言中將位址形象化地稱為「指標」,指標能找到以它為位址的記憶體單元。
那麼講單向鍊錶。單向鍊錶包含資料域和指標域,顧名思義,資料域就是儲存資料的區域,指標域存放的是下乙個元素的位址,鍊錶就這樣通過指標域互相串聯起來,像一條鍊子。
//建立乙個包含n個數字的鍊錶
#include
#include
struct node //建立包含資料域和指標域的結構體
;//;號不能忘
intmain()
t = head;
while
(t !=
null
)getchar()
;getchar()
;return0;
}//將數字6插入鍊錶1、2、3、4、5、7、8的第六位
#include
#include
struct node //定義結構體
;int
main()
scanf
("%d"
,&a)
;//讀入待插入的數
t = head;
//從頭遍歷
while
(t !=
null)
t = t->next;
} t = head;
while
(t !=
null
)getchar()
;getchar()
;return0;
}
陣列 鍊錶 佇列和棧 佇列,C語言實現
佇列,顧名思義就是很多個資料在排隊。既然是排隊,那就不能從最前面或者中間插進去,新來的資料只能排在隊伍的最後。另外,我們另外規定只有隊伍最前面的資料才能出去。當然,其實也只有隊伍最前面的資料能被外界檢視。能滿足這種功能的資料結構稱之為佇列。我們可以用陣列 鍊錶實現佇列。這裡用陣列實現簡單佇列。申請1...
鍊錶,棧和佇列
1.建立鍊錶 package com.zzw.鍊錶 非常基本的單項鍊表 author john public class node 新增乙個結點 node end new node d node n this while n.next null n.next end 刪除單向鍊錶中的結點 node ...
資料結構 C語言鍊錶構造棧和佇列
2.佇列 才開始學資料結構,寫點筆記,加深理解。棧和佇列是資料結構的基礎,很多演算法都會基於這兩個結構,比如dfs基於棧和bfs基於佇列。棧和佇列可以用鍊錶構造,也可以用陣列構造,我這裡是用鍊錶構造,並且是沒有長度的 編寫語言 c 編寫環境 vc 6.0 其實和組合語言的堆疊是乙個意思,先進後出,後...