最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)順序循環(huán)隊列實例

 更新時間:2022年02月10日 14:35:16   作者:犀牛超人  
大家好,本篇文章主要講的是C語言實現(xiàn)順序循環(huán)隊列實例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

一、隊列和循環(huán)隊列基本概念

隊列:

和棧相反,隊列是一種先進先出(FIFO)的線性表。只允許在一端插入,在另一端刪除。

允許插入的叫"隊尾"(rear),允許刪除的叫"隊頭"(front)。

入隊操作:L->rear++;   L->data[L->rear]=x;(需要入隊的元素)

出隊操作:L->front++;  x=L->data[L->front];

求隊長:隊長=(L->rear)-(L->front);

隊空:L->rear==L->front==-1;

隊滿:隊長=max

使用場景:一切具備先來后到的任務(wù)場景

循環(huán)隊列:

  和隊列類似,只不過隊頭和隊尾相連,解決了隊列的假溢出現(xiàn)象(隊尾指針達到申請空間的最大時,系統(tǒng)會認定空間滿,但是隊頭指針如果不為-1則就是假溢出)。
入隊:L->rear==(L->rear+1)%max;
出隊:L->front==(L->front+1)%max;
隊滿:由圖可知 隊滿和隊空條件重復(fù),所以為了避免這一情況現(xiàn)如今有兩種方法:1.少用一個元素空間,也就是說front指針在定義時指向0的位置,這樣才能使front和rear之間空出一個元素空間。2.這個方法比較容易理解,就是定義一個Num值來記錄元素個數(shù),num==0時則隊空,num==max時則隊滿。
具體操作:(L->rear+1)%max==front;  num==max;

隊空:L->rear==L->front;
隊長:分兩種情況:1.頭指針在尾指針之后:按普通隊列求法。2.頭指針在尾指針之前:隊長=L->rear+(max-(L->front));

二、代碼實操

 圖示:

 具體代碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ture 1
#define false 0
#define max 5
typedef struct {
	int data[max];
	int front,rear;
}cteam,*team;
static int num=0;  //全局變量 num  
//初始隊列
int Initteam(team &L){
	L=(cteam *)malloc(sizeof(cteam));
	if(L==NULL){
		printf("申請空間失?。?);
		return false;
	}
	L->front=L->rear=-1;
	return true;
}
//入隊
int pushteam(team &L,int x){
	if(num==max){
		printf("隊滿");
		return false;
	}else{
		L->rear=(L->rear+1)%max;  //rear始終在0-10中循環(huán)
		L->data[L->rear]=x; 
		num++;
		return true;
	}
} 
//出隊
int popteam(team &L,int &x){
	if(num==0){
		printf("隊空!");
		return false;
	}else{
		L->front=(L->front+1)%max;  //front始終在0-10中循環(huán)
		x=L->data[L->front];
		num--;
		printf("\n%d出隊\n",x);
		return x;
	} 
}
//遍歷隊
void printteam(team L){
	int p;
	p=L->front+1;
	if(L->front<L->rear){
		while(p<=L->rear){
		printf("%d ",L->data[p]);
		p++;}
	}else{
		while((p-1)!=L->rear){
			printf("%d ",L->data[p]);
			p=(p+1)%max;
		}
	}
  }
//求隊長 
 int teamlength(team L){
 	int p;
 	if(L->front<L->rear){
 		p=(L->rear)-(L->front);      //當隊列正常時 
	 }else{
	 	p=L->rear+(max-(L->front));  //當隊列開始循環(huán)時 
	 }
	printf("\n隊長為:%d",p);
 }
 //取隊頭元素
  int gettop(team L){
  	if(L->front==L->rear){
  		printf("隊空!");
  		return false;
	  }else{
	  	int t=L->data[L->front+1];
	  	return t;
	  }
  } 
  
  
  /*     
  		pushteam:入隊函數(shù)	popteam:出隊函數(shù) 
  		printteam:遍歷函數(shù)	gettop:取隊頭函數(shù) 
  		Initteam:初始化函數(shù)	teamlength:求隊長函數(shù) 
  */
  
  
int main(){
	team s;
	int w;
	Initteam(s);
	//1-3進隊列 
	pushteam(s,1);      
	pushteam(s,2);
	pushteam(s,3);
	printf("------1-3進隊列后----------\n");
	printf("此時隊列為:");
	printteam(s);
   	popteam(s,w);
	popteam(s,w);
	printf("此時隊列為:");
	printteam(s);
	printf("\n------4-6進隊列后----------\n");
	pushteam(s,4);
	pushteam(s,5);
	pushteam(s,6);
	printf("此時隊列為:");
	printteam(s);
	teamlength(s);
	int T=gettop(s);
	printf("\n隊頭元素為:%d",T);
}

實現(xiàn)結(jié)果:

總結(jié)

到此這篇關(guān)于C語言實現(xiàn)順序循環(huán)隊列實例的文章就介紹到這了,更多相關(guān)C語言順序循環(huán)隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VS Code 中搭建 Qt 開發(fā)環(huán)境方案分享

    VS Code 中搭建 Qt 開發(fā)環(huán)境方案分享

    這篇文章主要介紹了VS Code 中搭建 Qt 開發(fā)環(huán)境方案分享的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • C++中using的三種用法舉例詳解

    C++中using的三種用法舉例詳解

    最近在使用中,發(fā)現(xiàn)了一種以前沒學(xué)過的using用法,于是在這里,將using的幾種用法總結(jié)一下,下面這篇文章主要給大家介紹了關(guān)于C++中using的三種用法,需要的朋友可以參考下
    2023-02-02
  • Qt實現(xiàn)蘋果狀態(tài)切換按鈕

    Qt實現(xiàn)蘋果狀態(tài)切換按鈕

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)蘋果狀態(tài)切換按鈕,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • OpenCV實現(xiàn)圖像拼接案例

    OpenCV實現(xiàn)圖像拼接案例

    這篇文章主要介紹了OpenCV實現(xiàn)圖像拼接案例,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Cocos2d-x學(xué)習(xí)筆記之Hello World!

    Cocos2d-x學(xué)習(xí)筆記之Hello World!

    這篇文章主要介紹了Cocos2d-x學(xué)習(xí)筆記之Hello World!本文基于vs2010和C++語言開發(fā),需要的朋友可以參考下
    2014-09-09
  • C++多繼承(多重繼承)的實現(xiàn)

    C++多繼承(多重繼承)的實現(xiàn)

    多繼承容易讓代碼邏輯復(fù)雜、思路混亂,本文主要介紹了C++多繼承(多重繼承)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C語言運算符的重載詳解

    C語言運算符的重載詳解

    這篇文章主要為大家詳細介紹C語言運算符的重載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語言簡明清晰講解枚舉

    C語言簡明清晰講解枚舉

    枚舉法的本質(zhì)就是從所有候選答案中去搜索正確的解,枚舉算法簡單粗暴,他暴力的枚舉所有可能,盡可能地嘗試所有的方法,感興趣的朋友來看看吧
    2022-05-05
  • C++詳解默認參數(shù)的構(gòu)造函數(shù)及簡單實例代碼

    C++詳解默認參數(shù)的構(gòu)造函數(shù)及簡單實例代碼

    這篇文章主要介紹了 C++詳解默認參數(shù)的構(gòu)造函數(shù)及簡單實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C/C++?Linux?Socket網(wǎng)絡(luò)編程流程分析

    C/C++?Linux?Socket網(wǎng)絡(luò)編程流程分析

    這篇文章主要介紹了C/C++?Linux?Socket網(wǎng)絡(luò)編程,Linux環(huán)境中的C/C++?socket?與Window環(huán)境中的C/C++?socket類似,本文所記錄的是TCP協(xié)議的socket編程,圖文實例相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02

最新評論

鄄城县| 师宗县| 邵阳市| 宜丰县| 通化市| 丰宁| 阳春市| 保亭| 阳信县| 会宁县| 盐池县| 湘潭市| 尼勒克县| 安泽县| 若尔盖县| 新宾| 连江县| 自贡市| 乌拉特后旗| 七台河市| 连平县| 松滋市| 金昌市| 昭平县| 方正县| 微山县| 亳州市| 绥中县| 威海市| 佛学| 海宁市| 留坝县| 平武县| 岢岚县| 河西区| 昭平县| 镇康县| 弋阳县| 奉节县| 尚义县| 且末县|