欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言函數(shù)隊列 C語言 隊列

用C語言編寫隊列程序

#includestdio.h

創(chuàng)新互聯(lián)主營南雄網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),南雄h5小程序定制開發(fā)搭建,南雄網(wǎng)站營銷推廣歡迎南雄等地區(qū)企業(yè)咨詢

#includestdlib.h

#includemalloc.h

#define TRUE 1

#define FALSE 0

#define NULL 0

#define OK 1

#define OVERFLOW 0

#define ERROR 0

typedef int QElemType;

typedef int Status;

typedef struct QNode

{

QElemType data;

QNode *next;

}*QueuePtr;

struct LinkQueue

{

QueuePtr front,rear;//隊頭,隊尾指針

};

//函數(shù)列表

void InitQueue(LinkQueue Q)

{//初始化一個隊列

Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));

if(!Q.front)//生成頭結(jié)點失敗

exit(OVERFLOW);

Q.front-next=NULL;

}

void DestoryQueue(LinkQueue Q)

{ //銷毀隊列

while(Q.front)

{

Q.rear=Q.front-next;//Q.rear指向Q.front的下一個結(jié)點

free(Q.front);//釋放Q.front所指結(jié)點

Q.front=Q.rear;//Q.front指向Q.front的下一個結(jié)點

}

}

void ClearQueue(LinkQueue Q)

{ //將隊列清為空

DestoryQueue(Q);//銷毀隊列

InitQueue(Q);//重新構(gòu)造隊列

}

Status QueueEmpty(LinkQueue Q)

{ //判斷隊列是否為空

if(Q.front-next==NULL)

return TRUE;

else return FALSE;

}

int QueueLength(LinkQueue Q)

{ //求隊列的長度

int i=0;//計數(shù)器清0

QueuePtr p=Q.front;//p指向結(jié)點

while(Q.rear!=p)//p所指向的不是尾結(jié)點

{

i++;//計數(shù)器加1

p=p-next;

}

return i;

}

Status GetHead(LinkQueue Q,QElemType e)

{ //若隊列不空,則用e返回隊頭元素

QueuePtr p;

if(Q.front==Q.rear) return ERROR;

p=Q.front-next;//p指向隊頭結(jié)點

e=p-data;//將隊頭元素的值賦給e

return OK;

}

void EnQueue(LinkQueue Q,QElemType e)

{ //插入元素e為隊列Q的新的隊尾元素

QueuePtr p;

p=(QueuePtr)malloc(sizeof(QNode));

//動態(tài)生成新結(jié)點

if(!p)

exit(OVERFLOW);

p-data=e;//將e的值賦給新結(jié)點

p-next=NULL;//新結(jié)點的指針為空

Q.rear-next=p;//原隊尾結(jié)點的指針域為指向新結(jié)點

Q.rear=p;//尾指針指向新結(jié)點

}

Status DeQueue(LinkQueue Q,QElemType e)

{ //若隊列不為空,刪除Q的隊頭元素,用e返回其值

QueuePtr p;

if(Q.front==Q.rear)//隊列為空

return ERROR;

p=Q.front-next;//p指向隊頭結(jié)點

e=p-data;//隊頭元素賦給e

Q.front-next=p-next;//頭結(jié)點指向下一個結(jié)點

if(Q.rear==p)//如果刪除的隊尾結(jié)點

Q.rear=Q.front;//修改隊尾指針指向頭結(jié)點

free(p);

return OK;

}

void QueueTraverse(LinkQueue Q,void(*visit)(QElemType))

{ //對隊頭到隊尾依次對隊列中每個元素調(diào)用函數(shù)visit()

QueuePtr p;

p=Q.front-next;

while(p)

{

visit(p-data);//對p所指元素調(diào)用visit()

p=p-next;

}

printf("\n");

}

void print(QElemType e)

{

printf("%2d",e);

}

void main()

{

int i,k;

QElemType d;

LinkQueue q;

InitQueue(q);//構(gòu)造一個空棧

for(i=1;i=5;i++)

{

EnQueue(q,i);

}

printf("棧的元素為:");

QueueTraverse(q,print);

k=QueueEmpty(q);

printf("判斷棧是否為空,k=%d(1:為空9;0:不為空)\n",k);

printf("將隊頭元素賦給d\n");

k=GetHead(q,d);

printf("隊頭元素為d=%d\n",d);

printf("刪除隊頭元素:\n");

DeQueue(q,d);

k=GetHead(q,d);

printf("刪除后新的隊頭元素為d=%d\n",d);

printf("此時隊列的長度為%d\n",QueueLength(q));

ClearQueue(q);//清空隊列

printf("清空隊列后q.front=%u,q.rear=%u,q.front-next=%u\n",q.front,q.rear,q.front-next);

DestoryQueue(q);

printf("銷毀隊列后,q.front=%u,q.rear=%u\n",q.front,q.rear);

C語言隊列函數(shù)傳遞

當(dāng)然可以,定義成全局變量或者在定義的那個函數(shù)返回此隊列把此返回的隊列作為實參傳遞給另一個函數(shù)

c語言調(diào)用隊列庫函數(shù)

q.push(m); // queue是C++STL模板庫的東西,需要使用push來插入元素,詳細信息你可以參考MSDN來了解其使用及內(nèi)容。

c語言隊列操作

pq-rear-next

=

pnew這個代碼從隊列的尾部增加新節(jié)點,

然后pq-rear

=

pnew更新隊列尾部指針。隊列的數(shù)據(jù)結(jié)構(gòu)形式就是由一個頭front指針,一個尾rear指針來表征,items的設(shè)計是用空間換時間,涉及隊列大小的操作會非常方便。

隊列的特征是先進先出,你給出的鏈?zhǔn)綄崿F(xiàn),其實就跟一個鏈表一樣,鏈表的添加刪除如果能理解了,隊列只是鏈表的元素增加/刪除

按先進先出特點的一種實現(xiàn)。

但對于隊列來說,實現(xiàn)方式不是重點,先進先出的性質(zhì)才是重點,這在實際應(yīng)用中很多,比如排隊叫號。

c語言 隊列的操作

//定義隊列結(jié)構(gòu)體

typedef struct Qnode

{

int data;

struct Qnode *next;

} Queue , *QueuePtr;

typedef struct

{

QueuePtr front;

QueuePtr rear;

} linkQnode;

//創(chuàng)建一個隊列

initQueue (linkQnode *q)

{

q - front = q - rear = (QueuePtr) malloc (sizeof (Queue));

if (!q - front) exit (0);

q - front - next = NULL;

}

//入隊列

EnterQueue (linkQnode *q , int item)

{

QueuePtr p;

p = (QueuePtr) malloc (sizeof (Queue));

if (!p) exit (0);

p - data = item;

p - next = NULL;

q - rear - next = p;

q - rear = p;

}

//出隊列

DelQueue (linkQnode *q , int *item)

{

QueuePtr p;

if (q - front = q - rear) return;

p = q - front - next;

*item = p - data;

q - front - next = p - next;

if (q - rear == p)

q - rear = q - front;

free (p);

}

新聞標(biāo)題:c語言函數(shù)隊列 C語言 隊列
轉(zhuǎn)載源于:http://chinadenli.net/article24/hejcce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站服務(wù)器托管定制開發(fā)App開發(fā)小程序開發(fā)網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化