C語(yǔ)言編程基礎(chǔ)學(xué)習(xí)——隊(duì)列詳細(xì)講解!

C語(yǔ)言是面向過(guò)程的,而C++是面向?qū)ο蟮?/b>

C和C++的區(qū)別:

C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過(guò)一個(gè)過(guò)程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過(guò)程(事務(wù))控制)。

C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問(wèn)題域,這樣就可以通過(guò)獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過(guò)程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問(wèn)題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。

C與C++的最大區(qū)別:在于它們的用于解決問(wèn)題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語(yǔ)言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒(méi)有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫(xiě)出非常好的東西。

隊(duì)列(Queue)

一般的順序隊(duì)列:

由于這種結(jié)構(gòu)會(huì)有假溢出的情況,所以一般不選擇這種隊(duì)列,而更多的使用循環(huán)隊(duì)列。

循環(huán)隊(duì)列:

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開(kāi)發(fā)工具,很多干貨和技術(shù)資料分享!

判斷隊(duì)列滿的情況:

1、count來(lái)計(jì)數(shù);通常使用count

Count等于隊(duì)列的MAXSIZE

2、Flag標(biāo)志 int

入隊(duì)列 flag=1 出隊(duì)列flag=0

Front=rear&&flag==0

3、把一個(gè)存儲(chǔ)單元空出來(lái),不存放數(shù)據(jù)

Rear+1==front

注意事項(xiàng):(不要) 順序結(jié)構(gòu),SeqQueue myQueue;

鏈?zhǔn)剑簃alloc


初始化://(1)初始化

void SeqQueueInit(SeqQueue *Q)

{

Q->front = 0;

Q->rear = 0;

Q->count = 0;

}

//(2)入隊(duì)

int SeqQueueIn(SeqQueue *Q, intdata)

{

if (Q->count > 0 && Q->rear == Q->front)

{

printf("隊(duì)列滿! ");

return 0;

}

else

{

Q->data[Q->rear] = data; //把數(shù)據(jù)賦給隊(duì)尾元素

Q->rear = (Q->rear + 1) % MAXSIZE; //讓對(duì)位移動(dòng)一個(gè)位置+1

Q->count++; //計(jì)數(shù)器+1

return 1;

}

}

//(3)出隊(duì)列

int SeqQueueOut(SeqQueue *Q,int *data)

{

if (Q->count == 0)

{

printf("隊(duì)列空 ");

return 0;

}

else

{

*data = Q->data[Q->front];

Q->front = (Q->front + 1) % MAXSIZE;

Q->count--;

}

}

//釋放:

不要,數(shù)組是連續(xù)的存儲(chǔ)空間,隊(duì)列的大小10,隊(duì)列里面有沒(méi)有內(nèi)容,都是10個(gè)大小。

鏈?zhǔn)?,鏈表的時(shí)候,想要一塊內(nèi)存,開(kāi)一塊,刪除之后。

//count是計(jì)數(shù) 記什么數(shù)?隊(duì)列里面當(dāng)前的數(shù)據(jù)的個(gè)數(shù)。隊(duì)列的大小是10,存放了3個(gè)數(shù)據(jù) count=3.

//為什么要取余數(shù)

假設(shè):MAXSIZE 10

Rear 0 入隊(duì)的時(shí)候 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 就不屬于循環(huán)

(Rear+1)% 10 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2345678901234567890123456789

計(jì)算機(jī)或者手機(jī):硬件的配置已經(jīng)非常高。

計(jì)算機(jī):最大的瓶頸是什么? 機(jī)械硬盤(pán) 5400 7200讀寫(xiě)的速度嚴(yán)重限制計(jì)算機(jī)的功能,固態(tài)硬盤(pán),芯片,120G 好幾百 256G IT 500G 60G 32G

//鏈?zhǔn)降?要不要循環(huán)?


//#include

//#include

//

//typedef struct node //一個(gè)節(jié)點(diǎn)的信息

//{

// int data;

// struct node *pnext;

//}Qnode;

//

//typedef struct //隊(duì)列 隊(duì)頭 對(duì)位

//{

// Qnode *front; //隊(duì)頭的節(jié)點(diǎn)

// Qnode *rear; //隊(duì)尾節(jié)點(diǎn)

//}Queue;

//

////初始化

//void LQueueInit(Queue*);

////入隊(duì)

//void LQueueIn(Queue*, int);

////出隊(duì)列

//int LQueueOut(Queue*, int*);

//

//int main() //計(jì)算機(jī)有時(shí)候有些事情先做

//{

// int data;

// Queue myQueue;

//

// LQueueInit(&myQueue);

//

// for (int i = 0; i < 10; i++)

// {

// LQueueIn(&myQueue, i + 1); //1 2 3 4 5 6 7 8 9 10

// }

//

// for (int i = 0; i < 10; i++)

// {

// LQueueOut(&myQueue, &data);

// printf("%d ", data);

// }

//

// printf("front=%d rear=%d ", myQueue.front, myQueue.rear);

//

// LQueueIn(&myQueue, 11); //11

//

// printf("front=%d rear=%d ", myQueue.front, myQueue.rear); //一個(gè)節(jié)點(diǎn) 指向同一個(gè)位置

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開(kāi)發(fā)工具,很多干貨和技術(shù)資料分享!

//

// LQueueIn(&myQueue, 12);

// printf("front=%d rear=%d ", myQueue.front, myQueue.rear);

//

//

// return 0; //賺錢(qián),不義之財(cái)。解決大部分人的問(wèn)題最賺錢(qián)。

//}

//

////初始化

//void LQueueInit(Queue *Q) //帶空頭節(jié)點(diǎn)的棧

//{

// Q->front = NULL;

// Q->rear = NULL;

//}

//

////入隊(duì)

//void LQueueIn(Queue *Q, int data)

//{

// Qnode *pnew; //新節(jié)點(diǎn)

// pnew = (Qnode *)malloc(sizeof(Qnode)); //開(kāi)辟空間

// pnew->data = data; //給新節(jié)點(diǎn)賦值

// pnew->pnext = NULL; //把新節(jié)點(diǎn)的pnext指向空

//

// //隊(duì)尾 1、隊(duì)尾節(jié)點(diǎn)有內(nèi)容 2、原來(lái)的時(shí)候隊(duì)尾啥也沒(méi)有

// if (Q->rear != NULL)

// {

// Q->rear->pnext = pnew; //1、隊(duì)尾節(jié)點(diǎn)有內(nèi)容

// }

//

// Q->rear = pnew; //2、原來(lái)的隊(duì)尾啥也沒(méi)有

//

// if (Q->front == NULL) //front 有內(nèi)容的時(shí)候 什么都不做 沒(méi)有有內(nèi)容的時(shí)候

// {

// Q->front = pnew;

// }

//}

//

////出隊(duì)列

//int LQueueOut(Queue *Q, int *data)

//{

// //malloc開(kāi)辟的空間 釋放 front改變掉 能不能找到我出去的節(jié)點(diǎn)

// Qnode *pOut;

// if (Q->front == NULL)

// {

// printf("隊(duì)列空 ");

// return 0;

// }

// else

// {

// *data = Q->front->data; //把隊(duì)頭的數(shù)據(jù)賦值給data

// pOut = Q->front; //先用臨時(shí)指針pOut保存隊(duì)頭的數(shù)據(jù)

// Q->front = Q->front->pnext; //把隊(duì)頭往后移動(dòng) //這里玩去能夠知道front是不是空

//

// if (Q->front == NULL)

// {

// Q->rear = NULL;

// }

// free(pOut);

// return 1;

// }

//}

//動(dòng)態(tài)存儲(chǔ)

/*

#include

malloc:動(dòng)態(tài)開(kāi)辟一塊內(nèi)存 (void *)malloc(size)

free();釋放內(nèi)存

calloc(): (void *)calloc(unsigned n,unsigned size);

在內(nèi)存中動(dòng)態(tài)開(kāi)辟n個(gè) 大小為size的內(nèi)存。存儲(chǔ)空間是連續(xù)的。

realloc(): (void *)realloc(void *ptr,size_t size)

改變ptr這個(gè)指針?biāo)赶虻膬?nèi)存空間的大小。

double *d=(double *)malloc(sizeof(double));

int *i;

i=realloc(d,sizeof(int));

總結(jié):Void * 強(qiáng)制轉(zhuǎn)換為任意的指針類(lèi)型。

*/

//#include

//

//struct stu

//{

// int data;

// struct stu *pnext;

//};

//

//int main()

小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開(kāi)發(fā)工具,很多干貨和技術(shù)資料分享!

//{

// struct stu *p;

// p = (struct stu *)malloc(sizeof(struct stu));

//

// return 0;

//}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • C語(yǔ)言是面向過(guò)程的,而C++是面向?qū)ο蟮?C和C++的區(qū)別: C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程...
    小辰帶你看世界閱讀 1,361評(píng)論 0 3
  • #include #include #include #define MaxSize 50 //構(gòu)造環(huán)形隊(duì)列的數(shù)據(jù)...
    TDKDPIKA閱讀 292評(píng)論 0 0
  • 題目類(lèi)型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別? C沒(méi)有Protection行為...
    阿面a閱讀 7,891評(píng)論 0 10
  • 《激情》工作需要激情,因?yàn)橹挥泄ぷ?,才可以不斷充?shí)提升自己;生活需要激情,因?yàn)橹挥行腋I畈攀侨松脑俅笳T惑,包括...
    cb9fa4682249閱讀 447評(píng)論 0 0
  • 昨天,彥蕊似乎又遭遇了打擊。正好是專場(chǎng),她就在群里叨叨,傾訴了很久。 她在群里叨叨之前,先跟她的閨蜜哭訴了一中午。...
    真冉閱讀 444評(píng)論 0 0

友情鏈接更多精彩內(nèi)容