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

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!

這篇具有很好參考價值的文章主要介紹了[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

零.必備知識

0.1 一級指針 && 二級指針

0.2 雙鏈表節(jié)點(diǎn)的成員列表

? ? ? ? a. 數(shù)據(jù)

? ? ? ? b. 后驅(qū)指針

? ? ? ? c. 前驅(qū)指針

0.3 動態(tài)內(nèi)存空間的開辟

一. 雙鏈表的實(shí)現(xiàn)與銷毀

? ? ? ? 1.1 節(jié)點(diǎn)的定義

????????1.2 雙向鏈表的初始化 && 創(chuàng)建新節(jié)點(diǎn)

????????1.3 尾插?

? ? ? ? 1.4 頭插?

? ? ? ? 1.5 尾刪?

? ? ? ? 1.6 頭刪

? ? ? ? 1.7 在指定位置之后插入數(shù)據(jù)?

? ? ? ? 1.8 刪除指定位置的數(shù)據(jù)?

? ? ? ? 1.9 銷毀雙鏈表

?二.雙鏈表源碼

List.h

List.c


零.必備知識

0.1 一級指針 && 二級指針

0.2 雙鏈表節(jié)點(diǎn)的成員列表

? ? ? ? a. 數(shù)據(jù)

? ? ? ? b. 后驅(qū)指針

? ? ? ? c. 前驅(qū)指針

0.3 動態(tài)內(nèi)存空間的開辟


一. 雙鏈表的實(shí)現(xiàn)與銷毀

此次實(shí)現(xiàn)的鏈表是帶頭雙向循環(huán)鏈表.如圖:

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

? ? ? ? 1.1 節(jié)點(diǎn)的定義

后驅(qū)節(jié)點(diǎn)指向?qū)懸粋€節(jié)點(diǎn).

前驅(qū)節(jié)點(diǎn)指向前一個節(jié)點(diǎn).

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

????????1.2 雙向鏈表的初始化 && 創(chuàng)建新節(jié)點(diǎn)

初始化是指:創(chuàng)建了一個哨兵節(jié)點(diǎn).

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

這個哨兵節(jié)點(diǎn)的作用是:避免雙向鏈表死循環(huán).

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法?

????????1.3 尾插?

貫穿本文的核心要點(diǎn)是:先修改新節(jié)點(diǎn)中前驅(qū),后驅(qū)指針的指向.再修改其余節(jié)點(diǎn)前驅(qū),后驅(qū)指針的指向.

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

? ? ? ? 1.4 頭插?

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法?

? ? ? ? 1.5 尾刪?

尾刪和接下來的頭刪,都是可以創(chuàng)建一個臨時指針來指向要刪除的節(jié)點(diǎn).

這樣看以來更直觀,更重要的是方便進(jìn)行空間的釋放.

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

?[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

? ? ? ? 1.6 頭刪

?[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法?

? ? ? ? 1.7 在指定位置之后插入數(shù)據(jù)?

在指定位置之后插入數(shù)據(jù):可以先實(shí)現(xiàn)一個查找函數(shù),來自己指定pos.

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法?

? ? ? ? 1.8 刪除指定位置的數(shù)據(jù)?

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法?

? ? ? ? 1.9 銷毀雙鏈表

?注意:此處傳入的是一級指針,并沒有真正的修改phead(哨兵位/頭節(jié)點(diǎn))中的值,如果要真正的銷毀雙鏈表,需要傳入二級指針.

那么為什么我傳的是一級指針呢?? 答案:保持傳入?yún)?shù)的一致性.

[C語言][數(shù)據(jù)結(jié)構(gòu)][鏈表] 雙鏈表的從零實(shí)現(xiàn)!,C語言階段相關(guān)習(xí)題總覽,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表,開發(fā)語言,算法?文章來源地址http://www.zghlxwxcb.cn/news/detail-854886.html

?二.雙鏈表源碼

List.h

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

// 單個節(jié)點(diǎn)的定義
typedef int LTDateType;
typedef struct List
{
	LTDateType date;
	struct List* next; // 后驅(qū)節(jié)點(diǎn)
	struct List* prev; // 前驅(qū)節(jié)點(diǎn)
}List;
// 節(jié)點(diǎn)的創(chuàng)建
List* LTBuyNode(LTDateType x);
// 雙向鏈表的初始化
List* LTInit();
// 雙向鏈表的展示
void LTPrint(List* phead);
// 尾插-頭插
void LTPushBack(List* phead, LTDateType x);
void LTPushFront(List* phead, LTDateType x);
// 尾刪-頭刪
void LTPopBack(List* phead);
void LTPopFront(List* phead);
// 查找指定數(shù)據(jù)
List* LTFind(List* phead, LTDateType x);
// 在指定位置之后插入數(shù)據(jù)
void LTInsertAfter(List* pos, LTDateType x);
// 刪除指定位置的數(shù)據(jù)
void LTErase(List* phead, List* pos);
// 銷毀雙鏈表
void LTDestroy(List* phead);

List.c

#define  _CRT_SECURE_NO_WARNINGS
#include "List.h"
// 節(jié)點(diǎn)的創(chuàng)建
List* LTBuyNode(LTDateType x)
{
	List* newNode = (List*)malloc(sizeof(List));
	if (newNode == NULL) { // 創(chuàng)建失敗
		perror("malloc fail!");
		exit(1);
	}
	newNode->date = x;
	newNode->next = NULL;
	newNode->prev = NULL;
	return newNode;
}
// 雙向鏈表的初始化
List* LTInit()
{
	List* newNode = LTBuyNode(-1);
	newNode->next = newNode;
	newNode->prev = newNode;
	return newNode;
}
// 雙向鏈表的展示
void LTPrint(List* phead)
{
	assert(phead);
	List* pcur = phead->next;
	while (pcur != phead) {
		printf("%d->", pcur->date);
		pcur = pcur->next;
	}
	printf("\n");
}
// 尾插
void LTPushBack(List* phead, LTDateType x)
{
	assert(phead);
	// 創(chuàng)建新節(jié)點(diǎn)
	List* newNode = LTBuyNode(x);
	// 先更改新節(jié)點(diǎn)的前驅(qū)后驅(qū)指針
	newNode->next = phead;
	newNode->prev = phead->prev;

	// 更改其余節(jié)點(diǎn)的前驅(qū)后驅(qū)指針
	phead->prev->next = newNode;
	phead->prev = newNode;
}
// 頭插
void LTPushFront(List* phead, LTDateType x)
{
	assert(phead);
	List* newNode = LTBuyNode(x);
	// 更改newNode的前驅(qū)后驅(qū)指針
	newNode->next = phead->next;
	newNode->prev = phead;

	// 更改其余節(jié)點(diǎn)的指針指向
	phead->next->prev = newNode;
	phead->next = newNode;
}
// 尾刪
void LTPopBack(List* phead)
{
	assert(phead);
	List* pcur = phead->prev;
	// 更改要刪除的節(jié)點(diǎn)的前一個節(jié)點(diǎn)的指針指向
	pcur->prev->next = phead;
	
	// 更改哨兵位的指針指向
	phead->prev = pcur->prev;
	
	// 釋放尾節(jié)點(diǎn)
	free(pcur);
	pcur = NULL;
}
// 頭刪
void LTPopFront(List* phead)
{
	assert(phead);
	List* pcur = phead->next;
	
	phead->next = pcur->next;
	pcur->next->prev = phead;

	// 銷毀pcur節(jié)點(diǎn)
	free(pcur);
	pcur = NULL;
}
// 查找指定數(shù)據(jù)
List* LTFind(List* phead, LTDateType x)
{
	assert(phead);
	List* pcur = phead->next;
	while (pcur != phead) {
		if (pcur->date == x) {
			printf("找到了!\n");
			return pcur;
		}
		pcur = pcur->next;
	}
	printf("沒有找到!\n");
	return NULL;
}
// 在指定位置之后插入數(shù)據(jù)
void LTInsertAfter(List* pos, LTDateType x)
{
	assert(pos);
	List* newNode = LTBuyNode(x);

	// 修改新節(jié)點(diǎn)的指向
	newNode->next = pos->next;
	newNode->prev = pos;

	// 修改其余節(jié)點(diǎn)的指向
	pos->next->prev = newNode;
	pos->next = newNode;
}
// 刪除指定位置的數(shù)據(jù)
void LTErase(List* phead, List* pos)
{
	assert(phead && pos);

	pos->next->prev = pos->prev;
	pos->prev->next = pos->next;

	// 銷毀pos節(jié)點(diǎn)
	free(pos);
	pos = NULL;
}
// 銷毀雙鏈表
void LTDestroy(List* phead)
{
	assert(phead);
	List* pcur = phead->next;
	while (pcur != phead) {
		List* prev = pcur;
		pcur = pcur->next;
		// 銷毀 pcur的前一個節(jié)點(diǎn)
		free(prev);
		prev = NULL;
	}
	// 銷毀哨兵位
	free(phead);
	phead = NULL; // 但是沒有真正的改變哨兵位, 因?yàn)閭鞯氖且患壷羔?	              // 如果要真正的改變 phead的值,則需要傳遞二級指針
}

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

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

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

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】雙鏈表的定義和操作

    【數(shù)據(jù)結(jié)構(gòu)】雙鏈表的定義和操作

    目錄 1.雙鏈表的定義 2.雙鏈表的創(chuàng)建和初始化 3.雙鏈表的插入節(jié)點(diǎn)操作 4.雙鏈表的刪除節(jié)點(diǎn)操作 5.雙鏈表的查找節(jié)點(diǎn)操作 6.雙鏈表的更新節(jié)點(diǎn)操作 7.完整代碼 ??嗨!我是Filotimo__??。很高興與大家相識,希望我的博客能對你有所幫助。 ??本文由Filotimo__??原創(chuàng),首發(fā)于CS

    2024年02月03日
    瀏覽(93)
  • c語言數(shù)據(jù)結(jié)構(gòu)——鏈表的實(shí)現(xiàn)及其基本操作

    c語言數(shù)據(jù)結(jié)構(gòu)——鏈表的實(shí)現(xiàn)及其基本操作

    順序表的問題及思考 問題: 中間/頭部的插入刪除,時間復(fù)雜度為O(N) 增容需要申請新空間,拷貝數(shù)據(jù),釋放舊空間。會有不小的消耗。 增容一般是呈2倍的增長,勢必會有一定的空間浪費(fèi)。例如當(dāng)前容量為100,滿了以后增容到 200,我們再繼續(xù)插入了5個數(shù)據(jù),后面沒有數(shù)據(jù)插

    2023年04月09日
    瀏覽(97)
  • 【Java數(shù)據(jù)結(jié)構(gòu) -- 實(shí)現(xiàn)雙鏈表的接口方法】

    【Java數(shù)據(jù)結(jié)構(gòu) -- 實(shí)現(xiàn)雙鏈表的接口方法】

    雙鏈表是一種數(shù)據(jù)結(jié)構(gòu),其中每個節(jié)點(diǎn)包含 一個指向前一個節(jié)點(diǎn)的指針和一個指向后一個節(jié)點(diǎn)的指針 。由于鏈表沒有將元素存儲在連續(xù)的空間中,元素存儲在單獨(dú)的節(jié)點(diǎn)中,然后通過引用將節(jié)點(diǎn)連接起來,因此雙鏈表可以任意且快速的插入和刪除元素。 引用接口IList,在把

    2024年01月16日
    瀏覽(98)
  • Java 數(shù)據(jù)結(jié)構(gòu)篇-實(shí)現(xiàn)雙鏈表的核心API

    Java 數(shù)據(jù)結(jié)構(gòu)篇-實(shí)現(xiàn)雙鏈表的核心API

    ??博客主頁:? 小扳_-CSDN博客 ?感謝大家點(diǎn)贊??收藏?評論? ? ? ? 文章目錄 ? ? ? ? 1.0 雙鏈表的說明 ? ? ? ? 1.1 雙鏈表 - 創(chuàng)建 ? ? ? ? 1.2 雙鏈表 - 根據(jù)索引查找節(jié)點(diǎn) ? ? ? ? 1.3 雙鏈表 -?根據(jù)索引插入節(jié)點(diǎn) ? ? ? ? 1.4 雙鏈表 -?頭插節(jié)點(diǎn) ? ? ? ? 1.5 雙鏈表 - 尾插

    2024年02月04日
    瀏覽(91)
  • 數(shù)據(jù)結(jié)構(gòu)之雙鏈表的相關(guān)知識點(diǎn)及應(yīng)用

    數(shù)據(jù)結(jié)構(gòu)之雙鏈表的相關(guān)知識點(diǎn)及應(yīng)用

    ?找往期文章包括但不限于本期文章中不懂的知識點(diǎn): 個人主頁 :我要學(xué)編程(?_?)-CSDN博客 所屬專欄 :數(shù)據(jù)結(jié)構(gòu) 目錄 雙鏈表的實(shí)現(xiàn)? 初始化雙鏈表? 在雙鏈表中尾插數(shù)據(jù)? 在雙鏈表中尾刪數(shù)據(jù) 在雙鏈表中頭插數(shù)據(jù)? 在雙鏈表中頭刪數(shù)據(jù)? 在雙鏈表中的指定位置之后插入

    2024年04月26日
    瀏覽(95)
  • C語言---數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)---順序表的合并---鏈表的基本操作---重點(diǎn)解析約瑟夫問題

    C語言---數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)---順序表的合并---鏈表的基本操作---重點(diǎn)解析約瑟夫問題

    實(shí)驗(yàn)的寫法多種多樣,但本文并未采用 #define 定義容量的寫法,這樣寫已經(jīng)是很老舊過時的寫法。所有實(shí)驗(yàn)主體采用均為動態(tài)開辟,后續(xù)如果利用 C++ 來寫或許會應(yīng)用更多語法… 本篇展示數(shù)據(jù)結(jié)構(gòu)的兩個實(shí)驗(yàn) 其中,重點(diǎn)分析約瑟夫問題 實(shí)驗(yàn)中代碼的命名風(fēng)格等均與下方博客

    2024年02月16日
    瀏覽(95)
  • 數(shù)據(jù)結(jié)構(gòu)_雙鏈表、循環(huán)鏈表、靜態(tài)鏈表

    數(shù)據(jù)結(jié)構(gòu)_雙鏈表、循環(huán)鏈表、靜態(tài)鏈表

    目錄 1. 雙鏈表 1.1 雙鏈表的初始化 1.2 雙鏈表的插入操作 1.3 雙鏈表的刪除操作 1.4 雙鏈表的遍歷 2. 循環(huán)鏈表 2.1 循環(huán)單鏈表 2.2 循環(huán)雙鏈表 3. 靜態(tài)鏈表 4. 順序表和鏈表的比較 5. 相關(guān)練習(xí) ????????單鏈表結(jié)點(diǎn)中只有一個指向其后繼的指針,使得單鏈表只能從頭結(jié)點(diǎn)依次順序

    2024年02月02日
    瀏覽(92)
  • 【數(shù)據(jù)結(jié)構(gòu)和算法初階(C語言)】復(fù)雜鏈表(隨機(jī)指針,隨機(jī)鏈表的復(fù)制)題目詳解+鏈表順序表結(jié)尾

    【數(shù)據(jù)結(jié)構(gòu)和算法初階(C語言)】復(fù)雜鏈表(隨機(jī)指針,隨機(jī)鏈表的復(fù)制)題目詳解+鏈表順序表結(jié)尾

    目錄 ?1.隨機(jī)鏈表的復(fù)制 1.2題目描述? 1.3題目分析 1.4解題: 2.順序表和鏈表對比 2.1cpu高速緩存利用率 3.結(jié)語 一個長度為? n ?的鏈表,每個節(jié)點(diǎn)包含一個額外增加的隨機(jī)指針? random ? 該指針可以指向鏈表中的任何節(jié)點(diǎn)或空節(jié)點(diǎn)。? ? ? ? 構(gòu)造這個鏈表的? 深拷貝 。?深拷貝

    2024年03月10日
    瀏覽(93)
  • 【數(shù)據(jù)結(jié)構(gòu)】鏈表(單鏈表與雙鏈表實(shí)現(xiàn)+原理+源碼)

    【數(shù)據(jù)結(jié)構(gòu)】鏈表(單鏈表與雙鏈表實(shí)現(xiàn)+原理+源碼)

    博主介紹:?全網(wǎng)粉絲喜愛+、前后端領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、本質(zhì)互聯(lián)網(wǎng)精神、堅(jiān)持優(yōu)質(zhì)作品共享、掘金/騰訊云/阿里云等平臺優(yōu)質(zhì)作者、擅長前后端項(xiàng)目開發(fā)和畢業(yè)項(xiàng)目實(shí)戰(zhàn)?有需要可以聯(lián)系作者我哦! ??附上相關(guān)C語言版源碼講解?? ???? 精彩專欄推薦訂閱???? 不然下次找

    2024年01月24日
    瀏覽(638)
  • 數(shù)據(jù)結(jié)構(gòu)--線性表(順序表、單鏈表、雙鏈表、循環(huán)鏈表、靜態(tài)鏈表)

    前言 ?學(xué)習(xí)所記錄,如果能對你有幫助,那就泰褲辣。 目錄 1.線性表概念 定義 基本操作 2.順序表 定義 順序表的實(shí)現(xiàn)--靜態(tài)分配 動態(tài)分配 順序表的特點(diǎn) 順序表的插入和刪除 順序表的查找 按位查找 ?按值查找 3.單鏈表 定義 單鏈表的初始化 不帶頭節(jié)點(diǎn)的單鏈表 帶頭節(jié)點(diǎn)的單

    2024年02月11日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包