C語言實現佇列的定義及其基本操作

2021-10-04 14:28:53 字數 4505 閱讀 6943

佇列的定義

佇列的特點

佇列的儲存結構

順序佇列的定義及其基本操作

鏈隊的定義及其基本操作

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 ...