C/C++利用棧和隊列實現(xiàn)停車場管理系統(tǒng)
純c語言版
包含的功能
1、停車功能
如果停車場滿,能夠暫時存放到便道內(nèi)
2、開走車功能
將指定車開走后打印收據(jù),便道內(nèi)的車自動停到停車場
3、退出程序功能
運行效果
停車功能測試:

離開停車場并打印收據(jù)測試:

源碼
#define _CRT_SECURE_NO_WARNINGS//visual stduio添加對scanf的信任
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
#define size 1 //停車場位置數(shù)
//模擬停車場的堆棧的性質(zhì);
typedef struct zanlind {
int number; //汽車車號
float ar_time; //汽車到達(dá)時間
}zanInode;//車結(jié)點
typedef struct {
zanInode* base; //停車場的堆棧底
zanInode* top; //停車場的堆棧頂
int stacksize_curren;//堆棧長度
}stackhead;
//堆棧的基本操作;
void initstack(stackhead& L) //構(gòu)造一個空棧L
{
L.base = (zanInode*)malloc(size * sizeof(zanlind));//給棧L分配空間
if (!L.base) exit(0); //存儲分配失敗
L.top = L.base;//初始化棧頂和棧底指針相同
L.stacksize_curren = 0;//初始化棧長度為0
}
void push(stackhead& L, zanInode e) //插入元素e為新的棧頂元素
{
*L.top++ = e;//先讓L棧的棧頂指向e,然后棧頂指針+1
L.stacksize_curren++;//由于上面的e進(jìn)入了棧內(nèi),所以棧長度加一
}
void pop(stackhead& L, zanInode& e) //若棧不為空,刪除L的棧頂元素,用e返回其值
{
if (L.base==L.top)//棧長度為0時,停車場為空
{
printf("停車場為空!!");
return;
}
e = *--L.top;//如果棧頂和棧底不等,那么e為當(dāng)前top指針減一后的指向,這是因為棧頂指針始終指向棧頂元素的上面。
L.stacksize_curren--;//隨著top指針減一,棧長度減一。注意返回e是通過引用完成的,就是 &e,e的變化會導(dǎo)致實參的變化
}
//模擬便道的隊列的性質(zhì);
typedef struct duilie {//隊列就是便道(候車區(qū))
int number; //汽車車號
float ar_time; //汽車到達(dá)時間
struct duilie* next;//鏈?zhǔn)降年犃薪Y(jié)點,通過next指針訪問相鄰的隊列結(jié)點
}*queueptr;//指向隊列結(jié)點自身的指針
typedef struct {
queueptr front; //便道的隊列的對頭
queueptr rear; //便道的隊列的隊尾
int length;//隊列長度
}linkqueue;
//隊列的基本操作;
void initqueue(linkqueue& q) //構(gòu)造一個空隊列q,也是初始化
{
q.front = q.rear = (queueptr)malloc(sizeof(duilie));//給隊列q動態(tài)分配空間
if (!q.front || !q.rear)
exit(0); //如果隊首指針和隊尾指針為NULL,則存儲分配失敗
q.front->next = NULL;//隊首指針的下一個隊列結(jié)點置為NULL,隊列結(jié)點進(jìn)隊列只能從隊尾進(jìn)
q.length = 0;//初始化隊列長度為零
}
void enqueue(linkqueue& q, int number, int ar_time) //進(jìn)隊列,把車結(jié)點插入隊列尾(屬性為number,ar_time)
{
queueptr p;//創(chuàng)建隊列指針p
p = (queueptr)malloc(sizeof(duilie));//為p分配空間
if (!p) exit(0); //為空則存儲分配失敗
p->number = number;//讓隊列結(jié)點的車牌號等于插入進(jìn)來的車牌號
p->ar_time = ar_time;//同上,給時間賦值
p->next = NULL;//保證只能從隊尾進(jìn)隊列
q.rear->next = p;//將p結(jié)點插入到隊尾
q.rear = p;//此時隊尾指針rear指向插入進(jìn)來的p結(jié)點,方便下一次從隊尾插入車結(jié)點信息
q.length++;//插入后隊列長度加一
}
void popqueue(linkqueue& q, queueptr& w) //刪除q的隊頭元素 w(屬性為number,ar_time)
{
queueptr p;//創(chuàng)建中間隊列指針p
if (q.length==0)//隊首隊尾指針相同則候車區(qū)無車
{
printf("停車場通道為空");
return;
}
p = q.front->next;//p指針指向隊列q中的隊首位置
w = p;//將隊首元素賦值給w,即w代表刪除的隊首元素
q.front->next = p->next;//刪除隊首元素
q.length--;//刪除后隊列長度減一
}
float shijiancha(float x, float y) //求時間差的子程序,x是進(jìn)入時間,y是離開時間
{
if (x > y) {
printf("非法時間數(shù)據(jù)");
return -1;
}
int shix, shiy, fenx, feny;
float shijiancha;//返回值,待賦值
shix = x;//shix為進(jìn)入時間的整數(shù)部分
shiy = y;//shiy為離開時間的整數(shù)部分
fenx = (int)((x - shix) * 100);//fenx為進(jìn)入時間的小數(shù)部分的100倍
feny = (int)((y - shiy) * 100);//feny為離開時間的小數(shù)部分的100倍
if (fenx > feny)
{//如果fenx>feny,時間差就等于離開的整數(shù)減去進(jìn)入的整數(shù)-1再加上60+feny-fenx,實際上feny-fenx是負(fù)數(shù)
shijiancha = (shiy - shix - 1) + (float)(feny + 60 - fenx) / 100;
}
else//這個就是正常的了,整數(shù)部分減加上小數(shù)部分減即可
shijiancha = (shiy - shix) + (float)(feny - fenx) / 100;
return shijiancha;//返回值為時間差
}
void jinru(stackhead& st, linkqueue& q) //對進(jìn)入停車場的汽車的處理;
{
int number;//待使用的車牌號
float time_a;//待使用的時間
printf("請輸入車牌號:");
scanf("%d", &number);//
printf("請輸入您進(jìn)車場的時間(比如說:8點半則輸入8.30):"); scanf("%f", &time_a);
if (st.stacksize_curren < 2)//停車場可以停2輛車,大于兩輛車執(zhí)行else的語句
{
zanInode e;//創(chuàng)建車結(jié)點
e.number = number;//給車牌號賦值
e.ar_time = time_a;//給車時間賦值
push(st, e);//將賦值好的車結(jié)點入棧
printf("請把你的車停在%d號車道\n\n", st.stacksize_curren);//提示車停在了哪個車道
}
else//如果執(zhí)行這段代碼,說明停車場以及停滿2輛車
{
enqueue(q, number, time_a);//將車停入候車區(qū),也就是便道
printf("停車場已滿,請把你的車停在便道的第%d個位置上\n", q.length);
}
}
void likai(stackhead &st, stackhead &sl, linkqueue &q) //對離開的汽車的處理;
{ //st 堆棧為停車場,sl 堆棧為倒車場
int number, flag = 1; //q 為便道隊列
float sh, time_d, arrivaltime, money1;
printf("請輸入您的車牌號:"); scanf("%d", &number);
printf("請輸入您出車場的時間(比如說:8點半則輸入8.30):"); scanf("%f", &time_d);
zanInode e, q_to_s;//e為要查找的車結(jié)點,q_to_s為后面將從便道進(jìn)入停車場的車結(jié)點
queueptr w;//隊列指針,待使用
while (flag) //此時flag=1,死循環(huán)
{
pop(st, e);//取出棧頂結(jié)點
push(sl, e);//將取出的棧頂結(jié)點放入倒車場
if (e.number == number)//如果車牌號對應(yīng)
{
flag = 0;//flag變?yōu)?,死循環(huán)結(jié)束
arrivaltime = e.ar_time;//將該結(jié)點的進(jìn)入時間賦值給arrivaltime
sh = shijiancha(arrivaltime, time_d);//帶入計算時間差的函數(shù)并將時間差賦值給sh
money1 = (int)sh * 2 + (sh - (int)sh) * 100 / 30;//收費依據(jù)
}
}
pop(sl, e); //把倒車場的第一輛車(要離開的)去掉;
while (sl.stacksize_curren) //把倒車場的車倒回停車場
{
pop(sl, e); //取出棧頂結(jié)點
push(st, e);//將取出的棧頂結(jié)點放入倒車場
}
if (st.stacksize_curren < 2 && q.length != 0) //停車場有空位,便道上的車開進(jìn)入停車場
{
popqueue(q, w);//取出便道的第一個車并把其信息賦值給w指針
q_to_s.ar_time = w->ar_time;//將該車信息賦值給q_to_s結(jié)點
q_to_s.number = w->number;
push(st, q_to_s);//入棧,即停車
printf("車牌為%d 的車已從通道進(jìn)入停車場, 所在的停車位為 %d:\n", q_to_s.number, st.stacksize_curren);
}
printf("\n 收據(jù)");
printf("車牌號:%d\n", number);
printf("++++++++++++++++++++++++++++++\n");
printf(" 進(jìn)車場時間:%4.2f\n", arrivaltime);
printf(" 出車場時間:%4.2f\n", time_d);
printf(" 停留時間:%4.2f\n", sh);
printf(" 應(yīng)付(元) %4.2f\n", money1);
printf("++++++++++++++++++++++++++++++\n\n");
}
int main()
{
int m = 100;
int choose; //進(jìn)入或離開的標(biāo)識;
stackhead sting, slinshi; //停車場和臨時倒車場堆棧的定義;
linkqueue line; //隊列的定義;
initstack(sting); //構(gòu)造停車場堆棧sting
initstack(slinshi); //構(gòu)造倒車場堆棧slinshi
initqueue(line); //構(gòu)造便道隊列l(wèi)ine
printf("\n ******************停車場管理程序*************** ");
printf("\n*===========================================================*");
printf("\n*溫馨提示:請車主在24:00之前來取車,給您帶來的不便,敬請原諒!*");
printf("\n* 1 *** 汽車進(jìn)車場 2 *** 汽車出車場 3 *** 退出程序 *");
printf("\n*===========================================================*\n");
while (m)//m為100,可以重復(fù)操作100次
{
printf(" 請輸入您需要的服務(wù)的代號(1、2、3),謝謝!\n");
scanf("%d", &choose);//待選擇的操作
switch (choose)
{
case 1: jinru(sting, line); break; //汽車進(jìn)車場
case 2: likai(sting, slinshi, line); break; //汽車出車場
case 3: exit(0);//退出
}
--m;//m遞減
}
}
c++版
包含的功能
1、停車功能
如果停車場滿,能夠暫時存放到便道內(nèi)
2、開走車功能
將指定車開走后自動計費,便道內(nèi)的車自動停到停車場
3、查看停車場停車情況功能
可以查看停車場有無空位和停車信息。
4、退出程序功能
運行效果
停車功能測試:

離開停車場并自動計費測試:

查看停車場狀況功能測試:

源碼
#define _CRT_SECURE_NO_WARNINGS//visual stduio添加對scanf的信任
#include <stdio.h>
#include <stdlib.h>
#include <iostream>//C++IO流頭文件
using namespace std;//C++命名空間,配合IO流頭文件可使用cin>>輸入,cout<<輸出
#define MaxSize 5 //停車場最大停車位
#define fee 2 //一小時的費用
#define L 10000//宏定義
typedef int ElemType;//將整型int名字變?yōu)镋lemType,下面再使用ElemType就是整型的意思
ElemType tmpnum = 0;//車牌號
ElemType tmptime = 0;//進(jìn)入時間
typedef struct {
ElemType car_num[MaxSize];//車牌號數(shù)組
ElemType car_time[MaxSize];//進(jìn)入時間數(shù)組
int top;//數(shù)組下標(biāo)
}STACK;//棧,存放所有的車牌號和進(jìn)入時間數(shù)組
typedef struct qnode {//隊列結(jié)點
ElemType car_num;//包含車牌號
ElemType car_time;//和進(jìn)入時間
struct qnode* next;//指向自身的指針,用來當(dāng)問相鄰隊列結(jié)點
}QTYPT;//將qnode重命名為QTYPT
typedef struct qptr {//隊列
QTYPT* front;//隊首指針
QTYPT* rear;//隊尾指針
}SQUEUE;//將qptr重命名為SQUEUE
void InitStack(STACK* S) {//初始化棧S
S->top = -1;//數(shù)組下標(biāo)初始化為-1
}
int Full(STACK* S) {//棧滿的情況
if (S->top == MaxSize - 1) {
printf("\n Stack is full! Push");//提示棧滿
return 0;
}
return 1;
}
//入棧函數(shù)Push
int Push(STACK* S, ElemType num, ElemType time) {
if (S->top == MaxSize - 1) {
printf("\n Stack is full! Push");//棧滿提示,并退出
return 0;
}
S->top++; //棧不滿時數(shù)組下標(biāo)加一,此時為0
S->car_num[S->top] = num; //棧車牌號數(shù)組的car_num[top]賦值為num
S->car_time[S->top] = time; //同車牌號,這次是進(jìn)入時間的賦值
return 1; //賦值成功則返回1
}
int Empty(STACK* S) {//??盏那闆r
return (S->top == -1 ? 1 : 0);//??辗祷?
}
//出棧函數(shù)Pop
int Pop(STACK* S, ElemType* num, ElemType* time) {
if (Empty(S)) {//棧空無法出棧
puts("Stack is free Pop");
return 0;
}//棧不空時
*num = S->car_num[S->top]; //將棧頂?shù)能嚺铺栙x值給*num
*time = S->car_time[S->top];//賦值時間給*time
S->top--;//出棧后數(shù)組下標(biāo)減一
return 1;
}
//初始化隊列
void InitQueue(SQUEUE* LQ) {
QTYPT* p = NULL;//創(chuàng)建隊列結(jié)點指針
p = (QTYPT*)malloc(sizeof(QTYPT));//為p職責(zé)和你分配空間
p->next = NULL;//使p指針的next為空,相當(dāng)于頭結(jié)點
LQ->front = LQ->rear = p;//初始化隊首和隊尾指針指向頭結(jié)點p,
}
//將隊列結(jié)點入隊
int EnQueue(SQUEUE* LQ, ElemType num, ElemType time) {
QTYPT* s;//創(chuàng)建s指針
s = (QTYPT*)malloc(sizeof(QTYPT));//分配空間
s->car_num = num;//將車牌號賦值給p指向的車牌號
s->car_time = time;//賦值時間
s->next = LQ->rear->next;//將s結(jié)點插入到隊尾的下一個位置
LQ->rear->next = s;//隊尾指針的下一個位置指向s
LQ->rear = s;//隊尾指針指向新插入的結(jié)點,這樣時頭插法,符合隊列后進(jìn)后出的特點
return 1;
}
//計算隊列有多少結(jié)點
int CountQueue(SQUEUE* LQ) {
int i = 1;
QTYPT* mfront = NULL;//創(chuàng)建該隊列的新隊首指針
QTYPT* mrear = NULL;//創(chuàng)建新隊尾指針
mfront = LQ->front;//將隊首指針賦值給新隊首指針,記錄作用
mrear = LQ->rear;//同上
while (!(LQ->front == LQ->rear)) {//當(dāng)隊首不等于隊尾指針時,i++,統(tǒng)計的結(jié)點個數(shù)增加
i++;
LQ->front = LQ->front->next;//隊首指向隊首的下一個位置
}
LQ->front = mfront;//統(tǒng)計完成后將隊首指針指向原來的地址
return i;//i為結(jié)點個數(shù)
}
int Empty_Q(SQUEUE* LQ) {//隊列為空
return (LQ->front == LQ->rear ? 1 : 0);
}
int OutQueue(SQUEUE* LQ, ElemType* num, ElemType* time) {//取隊首
QTYPT* p;//創(chuàng)建對列結(jié)點指針
if (Empty_Q(LQ)) {//隊列空不能取隊首
puts("Quenue is free OutQuenue");
return 0;
}
p = LQ->front->next;//p指向隊首結(jié)點
*num = p->car_num;//將隊首結(jié)點信息賦值
*time = p->car_time;
LQ->front->next = p->next;//刪除隊首結(jié)點
if (LQ->front->next == NULL)//如果隊首結(jié)點不存在
LQ->rear = LQ->front;//隊首隊尾指針相同,隊空
free(p);//釋放p結(jié)點
return 1;
}
//檢查有無重復(fù)車牌號
int chackinput(STACK* S, int pnum) {
int i = 0;
int num;
num = pnum;//將車牌號賦值
i = S->top;//i為棧頂位置的數(shù)組下標(biāo)
for (; !(i == -1); i--)//從高到底遍歷car_num數(shù)組,找到車牌號返回1,否則返回0
if (S->car_num[i] == num)
return 1;
return 0;
}
//檢查時間輸入是否合理
int chacktime(STACK* S, int ptime) {
return S->car_time[S->top] <= ptime ? 1 : 0;//只有離開時間大于進(jìn)入時間才能賦值成功
}
//顯示停車場內(nèi)狀況
int displaystats(STACK* S, int pinput) {
void displayhead();//顯示菜單
int i = 0;
i = S->top;//i為棧頂位置的數(shù)組下標(biāo)
switch (pinput)//調(diào)用的時候自動填入10000
{
case 10000:
{
if (!Empty(S))//棧不空
for (; !(i == -1); i--)//遍歷輸出棧內(nèi)停車信息
printf("<===%d時%d號車停于%d車位===>\n", S->car_time[i], S->car_time[i], i + 1);
else
cout << "停車場為空";
printf("還有車%d個位\n", MaxSize - S->top - 1);//剩余車位等于最大停車位-當(dāng)前數(shù)組下標(biāo)再-1,因為數(shù)組是從0開始
break;
}
default:
{
return 1;
}
}
return 0;
}
//功能菜單
void displayhead() {
cout << '\n' << "<===============CT停車場管理系統(tǒng)===================>" << endl;
cout << "<==操作說明: ******* ==>" << endl;
cout << "<==1: 停車命令 ******* ==>" << endl;
cout << "<==2: 出車命令 *** ==>" << endl;
cout << "<==0: 退出程序 *** ==>" << endl;
cout << "<==3: 顯示停車場內(nèi)狀況 " << endl;
cout << "<==============================================>" << endl;
}
//打印收費條
void displayChange(STACK* S, ElemType pnum, int ptime) {
printf(" (單價 %d元/小時 )\n", fee);//fee在宏定義有,值為2
printf("<======================電子收據(jù)===================>\n");
printf("<==停車時間:--------------------------%d小時 ==>\n", ptime - tmptime);//停車時長
printf("<==車牌號碼:--------------------------%d ==>\n", tmpnum);//打印車牌號
printf("<==應(yīng)收費用:--------------------------%d 元 ==>\n", (ptime - tmptime) * fee);//計算費用
printf("<====================謝謝=歡迎下次再來=============>\n");
}
//開走車
int outparkstation(STACK* S1, STACK* TS, ElemType pnum) {
int t_num = 0;
int t_time = 0;
while (1) {
Pop(S1, &t_num, &t_time);//取出棧頂車
if (t_num == pnum) {//如果這一次取出的棧頂車的車牌號是我們想開走的
tmpnum = t_num;//進(jìn)行車牌號和進(jìn)入時間的賦值
tmptime = t_time;
while (!Empty(TS)) {//當(dāng)備用停車場不空時
Pop(TS, &t_num, &t_time);//循環(huán)取出備用停車場的暫存棧頂車
Push(S1, t_num, t_time);//將每次的棧頂車再放進(jìn)停車場
}
return 1;//結(jié)束循環(huán)
}
Push(TS, t_num, t_time);//棧頂不是我們想要的車就暫存再備用停車場
}
return 0;
}
//進(jìn)行停車
int inparkstation(STACK* S) {
int parknum;
int parktime;
printf("還有%d個車位\n", MaxSize - S->top - 1);
printf("請輸入車牌號碼:");
cin >> parknum;//輸入車牌號
while (chackinput(S, parknum)) {//調(diào)用檢驗函數(shù),重復(fù)則重新輸入車牌號
printf("車牌號碼重復(fù),請輸入%d1或者其他", parknum);
cin >> parknum;//輸入車牌號
}
printf("請輸入停車時間:");
cin >> parktime;//輸入停車時間
printf("%d號車于%d時??吭?d位\n", parknum, parktime, S->top + 2);//下標(biāo)加2是因為初始為-1,第一個車位于一號位,需要加2
Push(S, parknum, parktime);//將輸入的車牌號與進(jìn)入時間入棧,完成停車
return 1;
}
//在便道,棧滿時將車暫存到便道內(nèi)
int inbiandao(SQUEUE* SQ, STACK* S) {
int parknum;
printf("對不起,停車場已滿,請您到便道等待.停車場有空位時您將第");
printf("%d進(jìn)入停車場\n", CountQueue(SQ));//調(diào)用CountQueue()函數(shù),得到便道內(nèi)的結(jié)點個數(shù)
printf("請輸入車牌號碼:");
cin >> parknum;
while (chackinput(S, parknum)) {//如果有重復(fù)車牌號則重新輸入
printf("車牌號碼重復(fù),請輸入其他車牌號");
cin >> parknum;
}
EnQueue(SQ, parknum, 0);//將車牌號為parknum的車放進(jìn)便道,進(jìn)便道時間默認(rèn)為0
return 1;
}
//離開停車場
int OutParkingStation(SQUEUE* biandao, STACK* car, STACK* tmp) {
int parknum = 0;
int parktime = 0;
int buf = 0;
if (!Empty(car)) {//棧不空的情況下
displaystats(car, 10000);//遍歷查看停車場停車情況
printf("請輸入您要調(diào)出的車牌號碼:");
cin >> parknum;
while (!chackinput(car, parknum)) {
printf("沒有您要的%d的車牌號碼,請輸入正確的車牌號碼:", parknum);//沒有檢查到重新輸入
cin >> parknum;
}
outparkstation(car, tmp, parknum);//將車牌號為parknum的車開走
printf("%d時%d號車進(jìn)入停車場\n", tmptime, tmpnum);//上一行代碼已經(jīng)給開走的車進(jìn)入時間和車牌號賦值,
printf("請輸入現(xiàn)在的時間:");//開走時的時間
cin >> parktime;
while (!chacktime(car, parktime)) {//開走時間需要大于進(jìn)入時間,否則重新輸入
cout << "輸入時間小于停車時間,請重新輸入:";
cin >> parktime;
}
displayChange(car, parknum, parktime);//打印賬單
if (biandao->front != biandao->rear)
{
printf("%d號車位空開\n", car->top + 2);//提示開走的車占用的停車場位置空了
printf("%d時便道上的%d號汽車駛?cè)?d號車位", parktime, biandao->front->next->car_num, car->top + 2);//提示便道隊首元素進(jìn)入停車場
OutQueue(biandao, &parknum, &buf);//將便道隊首元素的車牌號賦值給parknum
Push(car, parknum, parktime);//將該車進(jìn)入停車場棧頂,進(jìn)入成功
}
return 2;
}
printf("停車場為空\n");//??談t停車場為空
return 1;
};
int main() {
int chance = 0;//用來選擇操作
STACK car;//創(chuàng)建未分配空間的car棧
InitStack(&car);//初始化,包括分配內(nèi)存空間
STACK tmp;//備用棧
InitStack(&tmp);//初始化
SQUEUE biandao;//創(chuàng)建隊列
InitQueue(&biandao);//初始化
loop://跳轉(zhuǎn)語句,配和goto語句使用
while (1) {
displayhead();//展示菜單
cout << "=>:";
cin >> chance;//輸入操作的選擇
switch (chance) {
case 1:
{
printf("查詢結(jié)果為:\n");
if (Full(&car))//棧未滿時執(zhí)行if,棧滿時執(zhí)行else
inparkstation(&car);//停進(jìn)停車場
else
inbiandao(&biandao, &car);//停進(jìn)便道
break;
}
case 2:
{
OutParkingStation(&biandao, &car, &tmp);//開走車
break;
}
case 3:
{
displaystats(&car, 10000);//查看停車場信息
break;
}
case 0:
{
printf("成功退出,歡迎下次使用!");
return 0;//退出循環(huán)
}
default:
{
cout << "輸入錯誤" << endl;
goto loop;//goto語句是跳轉(zhuǎn)的意思,跳轉(zhuǎn)到前面的loop位置,即繼續(xù)選擇操作
}
}
}
system("PAUSE");//終端出現(xiàn)按任意鍵繼續(xù),終端就是顯示運行結(jié)果的地方
return 0;
}以上就是C/C++利用棧和隊列實現(xiàn)停車場管理系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于C/C++停車場管理系統(tǒng)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言數(shù)學(xué)公式來實現(xiàn)土味表白
大家好,本篇文章主要講的是C語言數(shù)學(xué)公式來實現(xiàn)土味表白,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
C++實現(xiàn)簡易UDP網(wǎng)絡(luò)聊天室
這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)簡易UDP網(wǎng)絡(luò)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07

