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;
//}


