日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

顺序队列基本操作

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 顺序队列基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
順序隊列基本操作

#include?
"stdafx.h"
#include?
"stdio.h"
#include?
"stdlib.h"
#define??SMALL?1

#if(SMALL)
?
#define?MAX?7
?
int?QueueData[MAX]?=?{'A','B','C','D','E','F','G'};
#else
?
#define?MAX?14
?
int?QueueData[MAX]?=?{'A','B','C','D','E','F','G','H','I','J','K','L','M','N'};
#endif

/**//*順序隊列類型定義*/?
typedef?
struct
{
?
int?data[MAX];
?
int?head;
?
int?tail;
}
sqQueue;
/**//*鏈隊列類型定義*/?
struct?LinkQueue
{
?
int?data;
?
struct?LinkQueue?*link;
}
;

typedef?
struct?LinkQueue?lkQueue;
//-----------------------------------------------------------------------------------------
/**//*順序隊列基本操作函數定義部分*/
//順序隊列的初始化函數sqInitialize()
sqQueue?*sq_Initialize()
{
?sqQueue?
*p;
?p?
=?(sqQueue?*)malloc(sizeof(sqQueue));
?
if(p==NULL)
?
{
??
return(NULL);
?}

?
else
?
{
??p
->data[0]?=?0;
??p
->head?=?0;
??p
->tail?=?0;
??
return(p);
?}

}


//順序隊列的判空函數qIsEmpty()
int?qIsEmpty(sqQueue?*queue)
{
?
if(queue->head==queue->tail)
??
return(1);
?
else
??
return(0);
}


//順序隊列的判滿函數qIsFull()
int?qIsFull(sqQueue?*queue)
{
?
if(queue->head==MAX)
??
return(1);
?
else
??
return(0);
}


//順序隊列的入隊函數qInQueue()
int?qInQueue(sqQueue?*queue,int?data)
{
?
if(queue->tail==MAX)
?
{?
??printf(
"隊列已滿!\n");
??
return(0);
?}

?
else
?
{
??queue
->data[queue->tail++]?=?data;
??
return(1);
?}

}


//順序隊列的出隊函數qOutQueue()
int?qOutQueue(sqQueue?*queue,int?*p)
{
?
if(queue->head==queue->tail)
?
{
??printf(
"隊列已空!\n");
??
return(0);
?}

?
else
?
{
??
*p?=?queue->data[queue->head++];
??
return(1);
?}

}


//順序隊列的數據入隊操作函數qInputValue()
void?qInputValue(sqQueue?*queue,int?array[])
{
?
int?i=0;
?
while(qInQueue(queue,array[i]))
??printf(
"Queue[%d]?=?%c\t",i,array[i++]);
}


//順序隊列的數據出隊操作函數qOutputValue()
void?qOutputValue(sqQueue?*queue)
{
?
int?i,QueueData;
?i
=0;
?
while(qOutQueue(queue,&QueueData))
??printf(
"Queue[%d]?=?%c\t",i++,QueueData);
?printf(
"\n");
}

//-----------------------------------------------------------------------------------------
/**//*鏈式隊列基本操作函數定義部分*/
//鏈式隊列的初始化函數lk_Initialize()
lkQueue?*lk_Initialize()
{
?lkQueue?
*p;
?p?
=?(lkQueue?*)malloc(sizeof(lkQueue));
?
if(p==NULL)
?
{
??
return(NULL);
?}

?
else
?
{
??p
->data?=?0;
??p
->link?=?NULL;
??
return(p);
?}

}

//鏈式隊列的入隊函數lkInQueue()
//注意:在入隊時,參數是隊尾指針,返回值也是隊尾指針
lkQueue?*lkInQueue(lkQueue?*tail,int?data)
{
?lkQueue?
*p;
?p?
=?(lkQueue?*)malloc(sizeof(lkQueue));
?
if(p==NULL)
?
{
??printf(
"新增鏈式隊列元素時內存溢出!\n");
??
return(tail);
?}

?
else
?
{
??p
->data?=?data;
??p
->link?=?tail;
??
return(p);
?}

}

//鏈式隊列的出隊函數lkInQueue()
//注意:在出隊時,參數是隊首指針,返回值也是隊首指針
lkQueue?*lkOutQueue(lkQueue?*head,int?*data)
{
?
*p?=?head->data;

?lkQueue?
*p;
?p?
=?(lkQueue?*)malloc(sizeof(lkQueue));
?
if(p==NULL)
?
{
??printf(
"創建鏈式隊列時內存溢出!\n");
??
return(tail);
?}

?
else
?
{
??p
->data?=?data;
??p
->link?=?tail;
??
return(p);
?}

}

//-----------------------------------------------------------------------------------------
int?main(int?argc,?char*?argv[])
{
?sqQueue?
*queue1;
?lkQueue?
**lkHead,**lkTail;
?queue1?
=?sq_Initialize();
?
if(queue1==NULL)
?
{
??printf(
"創建順序隊列時內存溢出!\n");
??
return?0;
?}

?
else
?
{
??printf(
"\n順序隊列[入隊]數據\n");
??qInputValue(queue1,QueueData);
??printf(
"\n順序隊列[出隊]數據\n");
??qOutputValue(queue1);
?}

?printf(
"\n運行完畢!\n");
?
return?0;
}
?


轉載于:https://www.cnblogs.com/powersun/archive/2007/11/25/972020.html

總結

以上是生活随笔為你收集整理的顺序队列基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。