利用順序表的特性,定義乙個佇列游標的結構,頭front指向佇列的頭(注意!這裡為了好操作不直接讓頭等於佇列頭,因為以後可以利用頭追上尾表示隊空,這個標準使得迴圈佇列更易理解),尾rear等於隊尾。然後就是幾個基本的初始化、增加、減少、刪除等操作。順序的迴圈佇列由於無法釋放不需要的記憶體,相對迴圈佇列,鏈佇列而言容易造成假溢位。**略,你可以用乙個結構體陣列模擬上述過程。
這裡利用鍊錶的特性,然後就可以動態地管理到記憶體。
#include#include//******巨集定義引數******
#define ok 1
#define no 0
#define eorro 0
//******宣告資料型別別名******
typedef int status;
typedef char elemtype;
typedef double db;
//******宣告資料結構******
typedef struct node
queuenode,*queuepoint;
typedef struct
headnode,*headpoint;
headpoint initqueue()
status queueempty(headpoint head)
elemtype getfront(headpoint head)
return head->front->next->ch;
}void queuepop(headpoint head)
head->front=p->next;
head->queuesize--;
free(p);
return ;
}void queuepush(headpoint head,elemtype ch)
p->next=head->rear->next;
p->ch=ch;
head->rear->next=p;
head->rear=p;
head->queuesize++;
return ;
}void queuedelete(headpoint head)
int main()
printf("\n%s\n",queueempty(head)?"該隊列為空!":"該佇列非空!");
queuedelete(head);
free(head);
printf("鏈佇列操作結束!\n");
return 0;
}
總結:
佇列是一種先進先出的結構,今後的迷宮問題可以利用這種特性按層搜尋,找到最短路。類似於這類的按層搜尋問題都可以使用到佇列!
資料結構 佇列 順序佇列 迴圈佇列 鏈佇列)
前言 一 佇列的定義 二 佇列的順序儲存結構 1.順序佇列的定義 2.迴圈佇列定義 3.迴圈佇列的基本操作 三 佇列的鏈式儲存結構 1.鏈佇列的定義 2.鏈佇列的基本操作 佇列也是一種線性表,其特殊性在於佇列的基本操作是線性表的子集。佇列按 先進先出 的規則進行操作,故稱其為操作受限的線性表。佇列 ...
資料結構順序佇列實現
如題 這是一套完整的可執行的 需要讀者有一定的基礎去閱讀 語言是用c語言實現 在c 環境中編寫 在c 中可直接執行 在c語言中需要改部分標頭檔案和輸出語句 標頭檔案 這要是 的宣告部分 ifndef head define head include using namespace std typed...
資料結構鏈佇列實現
如題 這是一套完整的可執行的 需要讀者有一定的基礎去閱讀 語言是用c語言實現 在c 環境中編寫 在c 中可直接執行 在c語言中需要改部分標頭檔案和輸出語句 標頭檔案 這要是 的宣告部分 ifndef head define head include using namespace std typed...