?這篇文章收錄了王道考研課程中涉及的數(shù)據(jù)結(jié)構(gòu)的所有代碼。此外,本博客可能會(huì)添加一些額外的代碼(不僅限于王道考研),因?yàn)?08考試中會(huì)頻繁考察一些冷門(mén)的知識(shí)點(diǎn),所以這篇博客會(huì)涵蓋所有相關(guān)的代碼。這也是我數(shù)據(jù)結(jié)構(gòu)的第一輪復(fù)習(xí),希望能與大家共同進(jìn)步。由于博客篇幅的限制,可能無(wú)法一次性包含所有內(nèi)容,歡迎指出代碼錯(cuò)誤部分?。?!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812557.html
你想要的都在下面!?。?/h2>
// @FileName :DuiLie.c
// @Time :2023/8/14 20:49
// @Author :YKW
# include <stdio.h>
# include <stdbool.h>
# include <stdlib.h>
//隊(duì)列(Queue)只允許在一段進(jìn)行插入(入隊(duì)、隊(duì)尾),在另一端刪除的線(xiàn)性表
//順序隊(duì)列
#define MaxSize 10
typedef struct{
int data[MaxSize];
int front,rear;
//int size;//計(jì)數(shù)變量,判斷隊(duì)列空滿(mǎn),插入加一,刪除減一
//int tag;//每次刪除,=0,每次插入,=1
//則隊(duì)滿(mǎn):front==rear&&tag==1;
//隊(duì)空:front==rear&&tag==0;
}SqQueue;
void InitQueue(SqQueue *Q){
Q->front=Q->rear=0;
}
//入隊(duì)
bool EnQueue(SqQueue *Q,int x){
if((Q->rear+1)%MaxSize==Q->front)//隊(duì)列滿(mǎn),報(bào)錯(cuò)
return false;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxSize;//循環(huán)隊(duì)列,犧牲一個(gè)儲(chǔ)存空間,變成環(huán)狀
}
//出隊(duì)
bool DeQueue(SqQueue *Q,int x){
if(Q->rear==Q->front)//判斷隊(duì)空
return false;
x=Q->data[Q->front];
Q->front=(Q->front+1)%MaxSize;//隊(duì)頭指針后移
return true;
}
//獲得隊(duì)頭元素值,返回x
bool GetHead(SqQueue *Q,int x){
if(Q->rear==Q->front)//判斷隊(duì)空
return false;
x=Q->data[Q->front];
return true;
}
/*
* 隊(duì)滿(mǎn)(Q->rear+1)%MaxSize==Q->front;
* 隊(duì)空Q->rear==Q.front;
* */
//鏈隊(duì)列
typedef struct LinkNode{//鏈?zhǔn)疥?duì)列節(jié)點(diǎn)
int data;
struct LinkNode *next;
}LinkNode;
typedef struct {///鏈?zhǔn)疥?duì)列
LinkNode *front,*rear;//對(duì)頭/尾指針
}LinkQueue;
void InitQueue2(LinkQueue *Q){
Q->front=Q->rear=(LinkNode*)malloc(sizeof(LinkNode));
Q->front->next=NULL;
}
//入隊(duì)
void EnQueue2(LinkQueue *Q,int x){
LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q->rear->next=s;
Q->rear=s;
}
//出隊(duì)
bool DeQueue2(LinkQueue *Q,int *x){
if(Q->front==Q->rear)//空隊(duì)
return false;
LinkNode *p=Q->front->next;
*x=p->data;//x返回被刪除的元素
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
free(p);
return true;
}
//雙端隊(duì)列:兩端均可插入刪除
//輸入(輸出)受限的雙端隊(duì)列
// @FileName :DuiLie.c
// @Time :2023/8/14 20:49
// @Author :YKW
# include <stdio.h>
# include <stdbool.h>
# include <stdlib.h>
//隊(duì)列(Queue)只允許在一段進(jìn)行插入(入隊(duì)、隊(duì)尾),在另一端刪除的線(xiàn)性表
//順序隊(duì)列
#define MaxSize 10
typedef struct{
int data[MaxSize];
int front,rear;
//int size;//計(jì)數(shù)變量,判斷隊(duì)列空滿(mǎn),插入加一,刪除減一
//int tag;//每次刪除,=0,每次插入,=1
//則隊(duì)滿(mǎn):front==rear&&tag==1;
//隊(duì)空:front==rear&&tag==0;
}SqQueue;
void InitQueue(SqQueue *Q){
Q->front=Q->rear=0;
}
//入隊(duì)
bool EnQueue(SqQueue *Q,int x){
if((Q->rear+1)%MaxSize==Q->front)//隊(duì)列滿(mǎn),報(bào)錯(cuò)
return false;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%MaxSize;//循環(huán)隊(duì)列,犧牲一個(gè)儲(chǔ)存空間,變成環(huán)狀
}
//出隊(duì)
bool DeQueue(SqQueue *Q,int x){
if(Q->rear==Q->front)//判斷隊(duì)空
return false;
x=Q->data[Q->front];
Q->front=(Q->front+1)%MaxSize;//隊(duì)頭指針后移
return true;
}
//獲得隊(duì)頭元素值,返回x
bool GetHead(SqQueue *Q,int x){
if(Q->rear==Q->front)//判斷隊(duì)空
return false;
x=Q->data[Q->front];
return true;
}
/*
* 隊(duì)滿(mǎn)(Q->rear+1)%MaxSize==Q->front;
* 隊(duì)空Q->rear==Q.front;
* */
//鏈隊(duì)列
typedef struct LinkNode{//鏈?zhǔn)疥?duì)列節(jié)點(diǎn)
int data;
struct LinkNode *next;
}LinkNode;
typedef struct {///鏈?zhǔn)疥?duì)列
LinkNode *front,*rear;//對(duì)頭/尾指針
}LinkQueue;
void InitQueue2(LinkQueue *Q){
Q->front=Q->rear=(LinkNode*)malloc(sizeof(LinkNode));
Q->front->next=NULL;
}
//入隊(duì)
void EnQueue2(LinkQueue *Q,int x){
LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q->rear->next=s;
Q->rear=s;
}
//出隊(duì)
bool DeQueue2(LinkQueue *Q,int *x){
if(Q->front==Q->rear)//空隊(duì)
return false;
LinkNode *p=Q->front->next;
*x=p->data;//x返回被刪除的元素
Q->front->next=p->next;
if(Q->rear==p)
Q->rear=Q->front;
free(p);
return true;
}
//雙端隊(duì)列:兩端均可插入刪除
//輸入(輸出)受限的雙端隊(duì)列
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-812557.html
到了這里,關(guān)于王道計(jì)算機(jī)考研 數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言復(fù)現(xiàn)-第六章-隊(duì)列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!