佇列的定義
佇列的特點
佇列的儲存結構
順序佇列的定義及其基本操作
鏈隊的定義及其基本操作
1、佇列的定義
佇列,簡稱隊,它是一種操作受限的線性表,其限制在表的一端進行插入,另一端進行刪除。可進行插入的一端稱為隊尾(rear),可進行刪除的一端稱為隊頭(front)。向隊中插入元素叫入隊,新元素進入之後就稱為新的隊尾元素。從隊中刪除元素叫出隊,元素出隊後,其後繼結點元素就稱為新的隊頭元素。
2、佇列的特點
隊的特點就是先進先出(棧為先進後出)。打個比方,佇列就是在食堂吃飯的時候排隊,先到的人先拿到飯,後到的人後拿到。
3、佇列的儲存結構
佇列按儲存結構可分為鏈隊和順序隊兩種。
4、順序佇列
主要來說迴圈佇列
定義:
typedef
struct
squene;
約定:空佇列 q.front=q.rear
隊滿 q.front=(q.rear+1)%maxsize
入隊 q.rear++
出隊 q.front++
非空佇列:front始終指向隊頭元素,rear始終指向隊尾元素的下一位置
每插入乙個元素,rear=(rear+1)%(maxsize)
每刪除乙個元素,front=(front+1)%(maxsize)
迴圈佇列示意圖在這裡插入描述
初始化
void
initquene
(squene &s)
入隊操作
void
enquene
(squene &s,qelemtype e)
s.base[s.rear]
=e; s.rear=
(s.rear+1)
%maxsize;
}
出隊操作
void
dequene
(squene &s,qelemtype e)
e=s.base[s.front]
; s.front=
(s.front+1)
%maxsize;
}
求隊的長度
int
length
(squene s)
全部**為:
#include
#include
#define maxsize 100
typedef
int qelemtype;
typedef
struct
squene;
void
initquene
(squene &s)
void
enquene
(squene &s,qelemtype e)
s.base[s.rear]
=e; s.rear=
(s.rear+1)
%maxsize;
}void
dequene
(squene &s,qelemtype e)
e=s.base[s.front]
; s.front=
(s.front+1)
% maxsize;
}int
length
(squene s)
intmain()
printf
("%d"
,length
(s))
;return0;
}
鏈隊的定義
typedef
struct qnodeqnode,
*queneptr;
typedef
struct
linkquene;
約定:
隊空:s.front=s.rear(有頭結點)
s.front=null(無頭結點)
鏈隊無隊滿的情況(假定記憶體足夠大)
進隊操作
s->rear->next=p;
s->rear=p;
出隊操作
p=s->front;
s->front=p->next;
(或者s->front=s->front->next;
)x=p->data;
free ( p )
;
1、初始化
initquene
(linkquene &s)
2、判斷隊空
int
isqueneempty
(linkquene &s)
3、入隊
void
enquene
(linkquene &s,qelemtype e)
4、出隊
void
dequene
(linkquene &s,qelemtype &e)
queneptr p=s.front->next;
e=p->data;
s.front->next=p->next;
if(s.rear==p)
s.rear=s.front;
free
(p);
}
5、銷毀佇列
int
destory
(linkquene &s)
if(s.rear==s.front)
return1;
return0;
}
6、全部**
#include
#include
typedef
int qelemtype;
typedef
struct qnodeqnode,
*queneptr;
typedef
struct
linkquene;
void
initquene
(linkquene &s)
void
enquene
(linkquene &s,qelemtype e)
void
dequene
(linkquene &s,qelemtype &e)
queneptr p=s.front->next;
e=p->data;
s.front->next=p->next;
if(s.rear==p)
free
(p);
}int
destory
(linkquene &s)
if(s.front==s.rear)
return0;
}void
print
(linkquene s,
int n)
printf
("%d"
,p->data)
;printf
("\n");
}int
main()
print
(s,n)
;// printf("\n");
dequene
(s,x)
;printf
("%d"
,x);
printf
("\n");
print
(s,n-1)
;int a=
destory
(s);
if(a==1)
printf
("已銷毀");
else
printf
("還沒銷毀呢***");
return0;
}
C語言實現 佇列及基本操作
佇列 一.佇列的定義及基本運算 棧是一種後進先出的資料結構,在實際問題中還經常使用一種 先進先出 的資料結構 即插入在表一端進行,而刪除在表的另一端進行,將這種資料結構稱為隊或佇列,把允許插 入的一端叫隊尾 rear 把允許刪除的一端叫隊頭 front 二.佇列的儲存實現及運算實現 與線性表 棧類似...
佇列(c語言實現)
目錄前言 一 佇列是什麼?二 佇列的屬性與操作以及種類 1.佇列屬性 2.佇列操作 3.佇列種類 三 佇列的實現 c語言 總結 本文旨在幫助剛接觸佇列的人更快的掌握,語言不夠嚴謹,望海涵。栗子 一對情侶準備在情人節去電影院看電影,男的是個身穿格仔衫的程式設計師,我們就稱之為小木,由於排隊買票的人特別...
佇列 c語言實現
佇列 先進先出 define minquesize 5 typedef struct treenode elemtype typedef struct myqueue myqueue creatqueue int capacity myqueue res malloc sizeof myqueue ...