国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、隊(duì)列的概念及結(jié)構(gòu)

1、概念

隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出 FIFO(First In First Out)。


入隊(duì)列:進(jìn)行插入操作的一端稱為隊(duì)尾。

出隊(duì)列:進(jìn)行刪除操作的一端稱為隊(duì)頭。


2、結(jié)構(gòu)

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言


(1)隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言

  • 入隊(duì),不需要移動(dòng)任何元素,時(shí)間復(fù)雜度為?O(1) 。
  • 出隊(duì),所有元素需要往前移動(dòng),時(shí)間復(fù)雜度為?O(N)

(2)隊(duì)列的鏈表存儲(chǔ)結(jié)構(gòu)

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言

首先我們定義兩個(gè)指針,隊(duì)頭指針指向第一個(gè)節(jié)點(diǎn),隊(duì)尾指針指向尾節(jié)點(diǎn)。

  • 入隊(duì)(尾插),時(shí)間復(fù)雜度為 O(1) 。
  • 出隊(duì)(頭刪),時(shí)間復(fù)雜度為 O(1) 。

?二、隊(duì)列的實(shí)現(xiàn)

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言

如果使用數(shù)組刪除隊(duì)頭數(shù)據(jù),再挪動(dòng)數(shù)據(jù)效率為 O(N),不適合。?選擇用單向鏈表來(lái)完成隊(duì)列的實(shí)現(xiàn)更好,可以發(fā)現(xiàn)頭刪和尾插效率都很高,而雙向鏈表在這里發(fā)揮不出很大的作用。


1、創(chuàng)建文件

  • test.c(主函數(shù)、測(cè)試隊(duì)列各個(gè)接口功能)
  • Queue.c(隊(duì)列接口函數(shù)的實(shí)現(xiàn))
  • Queue.h(隊(duì)列的類型定義、接口函數(shù)聲明、引用的頭文件)

2、Queue.h 頭文件代碼

// Queue.h
// 鏈?zhǔn)浇Y(jié)構(gòu):表示隊(duì)列
#pragma once
#include<stdio.h>
#include<stdbool.h> //bool
#include<assert.h> // assert
#include<stdlib.h> // malloc

typedef int QDataType;

typedef struct QueueNode // 隊(duì)列節(jié)點(diǎn)結(jié)構(gòu)
{ 
    struct QueueNode* next; // 節(jié)點(diǎn)指針
    QDataType data; // 節(jié)點(diǎn)數(shù)據(jù)
}QueueNode;

typedef struct Queue // 隊(duì)列的鏈?zhǔn)浇Y(jié)構(gòu)
{ 
    QueueNode* head;  //隊(duì)頭指針
	QueueNode* tail;  //隊(duì)尾指針
}Queue; 

// 初始化隊(duì)列
void QueueInit(Queue* pq); 
// 銷毀隊(duì)列
void QueueDestroy(Queue* pq);
// 隊(duì)尾入隊(duì)列
void QueuePush(Queue* pq, QDataType data); 
// 隊(duì)頭出隊(duì)列
void QueuePop(Queue* pq); 
// 獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq); 
// 獲取隊(duì)列隊(duì)尾元素
QDataType QueueBack(Queue* pq); 
// 獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq); 
// 檢測(cè)隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0 
bool QueueEmpty(Queue* pq); 

三、Queue.c 中各個(gè)接口函數(shù)的實(shí)現(xiàn)

1、初始化隊(duì)列

// 初始化隊(duì)列
void QueueInit(Queue* pq)
{
	assert(pq);
	pq->head = pq->tail = NULL;
}

2、隊(duì)列的銷毀

// 銷毀隊(duì)列
void QueueDestroy(Queue* pq)
{
	assert(pq);
	QueueNode* cur = pq->head;
	while (cur)
	{
		QueueNode* next = cur->next;
		free(cur);
		cur = next;
	}
    cur = NULL;
	pq->head = pq->tail = NULL;
}

3、隊(duì)尾入隊(duì)列(尾插)

// 隊(duì)尾入隊(duì)列
void QueuePush(Queue* pq, QDataType x)
{
	assert(pq);
	QueueNode* newnode = (QueueNode*)malloc(sizeof(QueueNode)); // 動(dòng)態(tài)申請(qǐng)一個(gè)節(jié)點(diǎn)
	newnode->data = x;
	newnode->next = NULL; // 尾節(jié)點(diǎn)next指針置空

	if (pq->head == NULL) // 隊(duì)列為空
	{
		pq->head = pq->tail = newnode;
	}
	else // 隊(duì)列不為空
	{
		pq->tail->next = newnode;
		pq->tail = newnode; // 更新隊(duì)尾指針
	}
}

4、隊(duì)頭出隊(duì)列(頭刪)

// 隊(duì)頭出隊(duì)列
// 寫(xiě)法一:
void QueuePop(Queue* pq)
{
	assert(pq);

	//溫柔處理方式:
	/* if(pq->head == NULL)
	    return; */

	//暴力處理方式:
	assert(!QueueEmpty(pq));

	QueueNode* next = pq->head->next; // 記錄頭節(jié)點(diǎn)的直接后繼
	free(pq->head); // 釋放頭節(jié)點(diǎn)
	pq->head = next; // 更新隊(duì)頭指針
	if (pq->head == NULL) // 隊(duì)列中只有一個(gè)節(jié)點(diǎn)
	{
		pq->tail = NULL;
	}
}

// 寫(xiě)法二:
void QueuePop(Queue* pq)
{
	assert(pq);

	//暴力處理方式:
	assert(!QueueEmpty(pq));

    if(pq->head->next == NULL) // 一個(gè)節(jié)點(diǎn)
    {
        free(pq->head);
        pq->head = pq->tail = NULL;
    }
    else // 多個(gè)節(jié)點(diǎn)
    {   
	    QueueNode* next = pq->head->next; // 記錄頭節(jié)點(diǎn)的直接后繼
	    free(pq->head); // 釋放頭節(jié)點(diǎn)
	    pq->head = next; // 更新隊(duì)頭指針
    }
}

注意:鏈表只有一個(gè)節(jié)點(diǎn)時(shí),要單獨(dú)處理,否則可能會(huì)造成 pq->tail 野指針的情況。?


5、獲取隊(duì)列頭部元素

// 獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	return pq->head->data;
}

6、獲取隊(duì)列隊(duì)尾元素

// 獲取隊(duì)列隊(duì)尾元素
QDataType QueueBack(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	return pq->tail->data;
}

7、獲取隊(duì)列中有效元素個(gè)數(shù)

// 獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq)
{
	assert(pq);
	int n = 0;
	QueueNode* cur = pq->head;
	while (cur)
	{
		n++;
		cur = cur->next;
	}
	return n;
}

如果頻繁調(diào)用這個(gè)接口函數(shù),可以在 QueuePtr 中加一個(gè) size 來(lái)記錄數(shù)據(jù)的個(gè)數(shù)。?


8、檢查隊(duì)列是否為空

// 檢測(cè)隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0 
bool QueueEmpty(Queue* pq);
{
	assert(pq);
	return pq->head == NULL && pq->tail == NULL;
}

四、整合代碼

// Queue.c
#include "Queue.h"

// 初始化隊(duì)列
void QueueInit(Queue* pq)
{
	assert(pq);
	pq->head = pq->tail = NULL;
}

// 銷毀隊(duì)列
void QueueDestroy(Queue* pq)
{
	assert(pq);
	QueueNode* cur = pq->head;
	while (cur)
	{
		QueueNode* next = cur->next;
		free(cur);
		cur = next;
	}
    cur = NULL;
	pq->head = pq->tail = NULL;
}

// 隊(duì)尾入隊(duì)列
void QueuePush(Queue* pq, QDataType x)
{
	assert(pq);
	QueueNode* newnode = (QueueNode*)malloc(sizeof(QueueNode)); // 動(dòng)態(tài)申請(qǐng)一個(gè)節(jié)點(diǎn)
	newnode->data = x;
	newnode->next = NULL; // 尾節(jié)點(diǎn)next指針置空

	if (pq->head == NULL) // 隊(duì)列為空
	{
		pq->head = pq->tail = newnode;
	}
	else // 隊(duì)列不為空
	{
		pq->tail->next = newnode;
		pq->tail = newnode; // 更新隊(duì)尾指針
	}
}

// 隊(duì)頭出隊(duì)列
void QueuePop(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));

	QueueNode* next = pq->head->next; // 記錄頭節(jié)點(diǎn)的直接后繼
	free(pq->head); // 釋放頭節(jié)點(diǎn)
	pq->head = next; // 更新隊(duì)頭指針
	if (pq->head == NULL) // 隊(duì)列中只有一個(gè)節(jié)點(diǎn)
	{
		pq->tail = NULL;
	}
}

// 獲取隊(duì)列頭部元素
QDataType QueueFront(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	return pq->head->data;
}

// 獲取隊(duì)列隊(duì)尾元素
QDataType QueueBack(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));
	return pq->tail->data;
}

// 獲取隊(duì)列中有效元素個(gè)數(shù)
int QueueSize(Queue* pq)
{
	assert(pq);
	int n = 0;
	QueueNode* cur = pq->head;
	while (cur)
	{
		n++;
		cur = cur->next;
	}
	return n;
}

// 檢測(cè)隊(duì)列是否為空,如果為空返回非零結(jié)果,如果非空返回0 
bool QueueEmpty(Queue* pq);
{
	assert(pq);
	return pq->head == NULL && pq->tail == NULL;
}

五、測(cè)試隊(duì)列的功能

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言


【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言


六、拓展?

實(shí)際中我們有時(shí)還會(huì)使用一種隊(duì)列叫循環(huán)隊(duì)列。環(huán)形隊(duì)列可以使用數(shù)組實(shí)現(xiàn),也可以使用循環(huán)鏈表實(shí)現(xiàn)。

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言


1、空的循環(huán)隊(duì)列

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言


2、滿的循環(huán)隊(duì)列

【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解,數(shù)據(jù)結(jié)構(gòu),初學(xué)者,C語(yǔ)言,c語(yǔ)言,學(xué)習(xí),開(kāi)發(fā)語(yǔ)言文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-618913.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列(Queue)的實(shí)現(xiàn) -- 詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】

    【數(shù)據(jù)結(jié)構(gòu)與算法】7、隊(duì)列(Queue)的實(shí)現(xiàn)【用棧實(shí)現(xiàn)隊(duì)列】

    ?? 隊(duì)列 (Queue)是一種特殊的 線性表 , 只能在頭尾兩端進(jìn)行操作 ?? 隊(duì)尾(rear):只能從 隊(duì)尾添加 元素,一般叫做 enQueue , 入隊(duì) ?? 隊(duì)頭(front):只能從 隊(duì)頭移除 元素,一般叫做 deQueue , 出隊(duì) ?? 先進(jìn)先出 的原則, F irst I n F irst O ut, FIFO ?? 隊(duì)列內(nèi)部的實(shí)現(xiàn)可

    2024年02月12日
    瀏覽(25)
  • 【Golang】實(shí)現(xiàn)簡(jiǎn)單隊(duì)列(Queue)數(shù)據(jù)結(jié)構(gòu)

    ?在計(jì)算機(jī)科學(xué)中,隊(duì)列是一種特殊的線性數(shù)據(jù)結(jié)構(gòu),它遵循FIFO(先進(jìn)先出)原則。隊(duì)列中的元素只能從一端(稱為隊(duì)尾或后端)添加,并且只能從另一端(稱為隊(duì)頭或前端)移除。這種特性使得隊(duì)列在許多算法和數(shù)據(jù)結(jié)構(gòu)中都有廣泛的應(yīng)用,例如操作系統(tǒng)中的任務(wù)調(diào)度、網(wǎng)

    2024年01月19日
    瀏覽(25)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列-Queue

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列-Queue

    ? 作者:小胡_不糊涂 ?? 作者主頁(yè):小胡_不糊涂的個(gè)人主頁(yè) ?? 收錄專欄:淺談數(shù)據(jù)結(jié)構(gòu) ?? 持續(xù)更文,關(guān)注博主少走彎路,謝謝大家支持 ?? 隊(duì)列: 只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(FirstIn First Out) 入隊(duì)列:

    2024年02月08日
    瀏覽(25)
  • [數(shù)據(jù)結(jié)構(gòu) -- C語(yǔ)言] 隊(duì)列(Queue)

    [數(shù)據(jù)結(jié)構(gòu) -- C語(yǔ)言] 隊(duì)列(Queue)

    目錄 1、隊(duì)列 1.1 隊(duì)列的概念及結(jié)構(gòu) 2、隊(duì)列的實(shí)現(xiàn) 2.1 接口 3、接口的實(shí)現(xiàn) 3.1 初始化隊(duì)列 3.2 隊(duì)尾入隊(duì)列 分析: 3.3 隊(duì)頭出隊(duì)列 分析: 3.4 獲取隊(duì)列頭部元素 3.5 獲取隊(duì)列尾部元素 3.6 獲取隊(duì)列中有效元素個(gè)數(shù) 3.7 檢測(cè)隊(duì)列是否為空 3.7.1 int 類型判空 3.7.2 bool 類型判空 3.8 銷毀隊(duì)

    2024年02月07日
    瀏覽(17)
  • 隊(duì)列(Queue):先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列(Queue):先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)

    隊(duì)列是一種基本的數(shù)據(jù)結(jié)構(gòu),用于在計(jì)算機(jī)科學(xué)和編程中管理數(shù)據(jù)的存儲(chǔ)和訪問(wèn)。隊(duì)列遵循先進(jìn)先出(First In, First Out,F(xiàn)IFO)原則,即最早入隊(duì)的元素首先出隊(duì)。這種數(shù)據(jù)結(jié)構(gòu)模擬了物理世界中的隊(duì)列,如排隊(duì)等待服務(wù)的人。 在本篇博客中,我們將詳細(xì)介紹隊(duì)列的概念、用途

    2024年02月05日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)入門到入土——棧(Stack)和隊(duì)列(Queue)

    數(shù)據(jù)結(jié)構(gòu)入門到入土——棧(Stack)和隊(duì)列(Queue)

    目錄 一,棧(Stack) 1.1 概念 1.2 棧的使用 1.3 棧的模擬實(shí)現(xiàn) 1.4 棧的應(yīng)用場(chǎng)景 1.5 棧,虛擬機(jī)棧,棧幀有什么區(qū)別? 二,隊(duì)列(Queue) 2.1 概念 2.2 隊(duì)列的使用 ?2.3 隊(duì)列模擬實(shí)現(xiàn) 2.4 循環(huán)隊(duì)列 三,雙端隊(duì)列 棧 :一種特殊的線性表,其 只允許在固定的一端進(jìn)行插入和刪除元素操

    2024年02月02日
    瀏覽(21)
  • Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】

    Java 【數(shù)據(jù)結(jié)構(gòu)】 棧(Stack)和隊(duì)列(Queue)【神裝】

    ? 登神長(zhǎng)階 ?第三神裝 S tack ? ?第四神裝?Queue ?? 目錄 ??一.棧 Stack ??1.概念 ???2.基本操作? ???3.相關(guān)OJ題?? ???4.棧、虛擬機(jī)棧和棧幀的區(qū)別 ??二.隊(duì)列 Queue ???1.概念 ??2.基本操作 ??三.總結(jié)與反思 ????????在 Java 中,棧(Stack)是一種后進(jìn)先出(LIFO)的數(shù)

    2024年04月27日
    瀏覽(27)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】隊(duì)列的實(shí)現(xiàn)詳解

    【算法與數(shù)據(jù)結(jié)構(gòu)】隊(duì)列的實(shí)現(xiàn)詳解

    隊(duì)列的概念: 隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出FIFO(First In First Out) 新添加的元素添加到隊(duì)尾,只能從隊(duì)頭取出元素。 入隊(duì)列:進(jìn)行插入操作的一端稱為隊(duì)尾 出隊(duì)列:進(jìn)行刪除操作的一端稱為隊(duì)頭 隊(duì)列特征如

    2024年04月13日
    瀏覽(35)
  • 【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列篇| 超清晰圖解和詳解:循環(huán)隊(duì)列模擬、用棧實(shí)現(xiàn)隊(duì)列、用隊(duì)列實(shí)現(xiàn)棧

    【數(shù)據(jù)結(jié)構(gòu)】隊(duì)列篇| 超清晰圖解和詳解:循環(huán)隊(duì)列模擬、用棧實(shí)現(xiàn)隊(duì)列、用隊(duì)列實(shí)現(xiàn)棧

    博主簡(jiǎn)介: 努力學(xué)習(xí)的22級(jí)計(jì)算機(jī)科學(xué)與技術(shù)本科生一枚?? 博主主頁(yè): @是瑤瑤子啦 每日一言??: 每一個(gè)不曾起舞的日子,都是對(duì)生命的辜負(fù)。——尼采 ??622. 設(shè)計(jì)循環(huán)隊(duì)列 ???? 思路: ??數(shù)據(jù)結(jié)構(gòu): 使用數(shù)組為數(shù)據(jù)結(jié)構(gòu),且采用犧牲一個(gè)空間的方法來(lái)包裝判空和判滿的

    2024年02月11日
    瀏覽(28)
  • (詳解)數(shù)據(jù)結(jié)構(gòu)-----------棧與隊(duì)列 c語(yǔ)言實(shí)現(xiàn)

    (詳解)數(shù)據(jù)結(jié)構(gòu)-----------棧與隊(duì)列 c語(yǔ)言實(shí)現(xiàn)

    本章將會(huì)詳細(xì)講解以下知識(shí)點(diǎn): 目錄 一:棧 ? ? ? ? 1:棧的定義,棧的特點(diǎn) ? ? ? ? 2:用什么結(jié)構(gòu)來(lái)實(shí)現(xiàn)棧與原因的分析? ? ? ? ??3:? (超詳解)棧的常用接口并且附上測(cè)試用例 二:隊(duì)列 ? ? ? ? 1:隊(duì)列的定義,隊(duì)列的特點(diǎn) ? ? ? ? 2:用什么結(jié)構(gòu)來(lái)實(shí)現(xiàn)隊(duì)列與原因的分析

    2024年02月11日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包