日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二个一千行总结-数据结构C复习--知识点总结2--五到七章

發布時間:2023/12/4 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二个一千行总结-数据结构C复习--知识点总结2--五到七章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第五章 數組與廣義表

n維數組看作數據元素為n-1維數組的線性表

數組地址計算:略

特殊矩陣壓縮:

三角矩陣;三對角矩陣(帶狀矩陣);

稀疏矩陣:存儲數據總量小于百分之三十

稀疏矩陣用三元組(行,列,值)儲存,定義如下:
typedef struct{
?? ?int row, col;//行,列?
?? ?int e;
}Triple;

typedef struct{
?? ?Triple data[MAX+1];
?? ?int m, n, len;//行,列,數據總個數?
}TSMtrix;

普通雙for循環算法
void TransMatrix(int a[m][n], b[m][n]){
?? ?int i, j;
?? ?
?? ?for(i = 0; i < m; i++)
?? ??? ?for(j = 0; j < n; j++)
?? ??? ??? ?b[j][i] = a[i][j];?? ?
}?

稀疏矩陣遞增轉置法
void TransposeTSMatrix(TSMatrix A, TSMatrix *B){
?? ?int i, j, k;
?? ?
?? ?B->m = A.n; B->n = A.m; B->len = A.len;
?? ?//多次掃描,找到A列中對應B中的行的元素,一共掃描A.n次?
?? ?if(B->len){
?? ??? ?j = 1;
?? ??? ?for(k = 1;k <= A.n;k++)//A.n為列數
?? ??? ??? ?for(i=0 ;i < A.len;i++) ? ? ? ? ? ? ??
?? ??? ??? ??? ?if(A.data[i].col == k)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?B->data[j].row = A.data[i].col;
?? ??? ??? ??? ??? ?B->data[j].col = A.data[i].row;
?? ??? ??? ??? ??? ?B->data[j].e = A.data[i].e;
?? ??? ??? ??? ??? ?j++;
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ?}
}?

//一次快速定位轉置法
void FastTransposeTSMatrix(TSMatrix A, TSMatrix *B) {
?? ?int col, i, j ,k;
?? ?//值得注意的是Triple定義的數組data[]保存的是存在元素(非0元素),值為零的不存?
?? ?int num[MAXSIZE],position[MAXSIZE];
?? ?
?? ?B->m = A.n; B->n = A.m; B->len = A.len;
?? ?if(B->len){
?? ??? ?num[] = {0};
?? ??? ?//循環清0也可以
?? ??? ?for(t = 1;t <= A.len;t++)
?? ??? ??? ?num[A.data[t].col]++;//統計第col列的數據個數?
?? ??? ??? ?
?? ??? ?position[1] = 1;
?? ??? ?for(col = 2;col<=A.len;col++)//根據num每一列個數得到每一個新列第一個元素的位置?
?? ??? ??? ?position[col] = position[col-1]+num[col-1]; //position為第幾個元素
?? ??? ??? ??
?? ??? ?for(p = 1;p ?? ??? ?{
?? ??? ??? ?col = A.data[p].col;?
?? ??? ??? ?q = position[col];//找到該列第一個元素的位置?
?? ??? ??? ?B->data[q].row = A.data[p].col;
?? ??? ??? ?B->data[q].col = A.data[p].row;
?? ??? ??? ?B->data[q].e = A.data[p].e;
?? ??? ??? ?position[col]++;
?? ??? ??? ?//下一個列號為col的非零元素再B中存放位置?
?? ??? ?}
?? ?}
}

十字鏈表?
typedef ElemType int
typedef struct OLNode
{
?? ?int col, row;
?? ?ElemType value;
?? ?struct OLNode *right, *down;?
}OLNode, *OLink;

typedef struct
{
?? ?OLink *row_head, *col_head;//注意這個是行列頭指針鏈表的指針數組?
?? ?int m, n, len;?? ??? ??? ??? ?//行列長度?
}CrossList;

//建立十字鏈表
bool CreateCrossList(CrossList *M){
?? ?//先輸入矩陣M的相關信息?
?? ?//為指針數組分配空間并且初始化
?? ?//輸入十字鏈表每個節點的相關信息
?? ?//判斷是否輸入正確
?? ?//正確則進行創建結點并且插入鏈表
?? ?int m, n, len;
?? ?int col, row;
?? ?ElemType value;
?? ?int i;
?? ?OLink *q,*p;
?? ??
?? ?
?? ?scanf(&m, &n, &len);
?? ?M->len = len; M->m = m; M->n = n;
?? ?
?? ?if(!(M->row_head = (* OLink)malloc(m * sizeof(OLink)))) return false;
?? ?if(!(M->col_head = (* OLink)malloc(n * sizeof(OLink)))) return false;
?? ?//以下可以直接寫M->row_head[ ] = NULL;
?? ?for(i = 0; i < m; i++)
?? ??? ?M->row_head[i] = NULL;
?? ?for(i = 0;i < n; i++)
?? ??? ?M->col_head[i] = NULL;
?? ?
?? ?for(scanf(&row, &col, &value); row != -1; scanf(&row, &col, &value))
?? ?{
?? ??? ?if(!(p = (OLNode *)malloc(sizeof(OLNode)))) return false;
?? ??? ?p->col = col;
?? ??? ?p->row = row;
?? ??? ?p->value = value;
?? ??? ?//先插行再插列互相不干擾
?? ??? ?if(M->row_head[row] == NULL)?
?? ??? ??? ?M->row_head[row] = p;
?? ??? ?else{
?? ??? ??? ?q = M->row_head[row];
?? ??? ??? ?while(q->right && q->right->row < row)
?? ??? ??? ??? ?q = q->right;
?? ??? ??? ?//q此時指向該行鏈表最后一個元素
?? ??? ??? ?//類似與尾插?
?? ??? ??? ?p->right = q->right;
?? ??? ??? ?q->right = p;
?? ??? ?}
?? ??? ?if(M->col_head[col] == NULL)
?? ??? ??? ?M->col_head[col] = p;
?? ??? ?else{
?? ??? ??? ?q = M->col_head[col];
?? ??? ??? ?while(q->down && q->down->col < col){
?? ??? ??? ??? ?q = q->down;
?? ??? ??? ?}
?? ??? ??? ?p->down = q->down;
?? ??? ??? ?q->down = p;
?? ??? ?}
?? ?}
}?

廣義表:遞歸定義, 可以為無限序列(線性表為有限序列).表頭為第一個元素,其余為表尾.
定義:
typedef enum{
?? ?ATOM, LIST
}Elemtag;//atom為原子結點標志,list為表結點標志

typedef struct GLNode{
?? ?ElemTag tag;
?? ?
?? ?union{//以下表明二選一?
?? ??? ?AtomType atom;
?? ??? ?struct{
?? ??? ??? ?struct GLNode *hp, *tp;
?? ??? ?}htp;
?? ?}atom_htp;
}GLNode , *GList;
廣義表操作:略


第六章: 樹與二叉樹!!!!!!!!!!!

定義:根,子樹,結點,度,高度(深度), 分支結點, 葉子節點, 森林, 孩子.兄弟.祖先.堂兄弟.子孫.雙親結點, 前/后輩.

?樹的圖解表示法?
?1.樹形表示法(倒置樹結構)
?2.文氏圖表示法
?3.廣義表示形式(嵌套括號表示法)
?4.凹入表示法?? ?
?
二叉樹!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
性質:第i層至多2^(i-1)個結點; 前k層至多2^(k-1)個結點.
葉子結點為n,度數為2結點為m,則n = m + 1.?
區別:!!!滿二叉樹和完全二叉樹
完全二叉樹為:其深度下的1~n的位置序號分別與等高的滿二叉樹一一對應. 其深度計算log2(n)向下取整+1
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//相當于python里面的floor(log2(n)) log2(7)+1= 3

存儲結構:
順序存儲結構:按照結點的層序編號以此存儲到數組(向量)對應位置
鏈式存儲結構:
定義如下:
typedef DataType int
typedef struct Node{
?? ?DataType data;
?? ?struct Node *LChild;
?? ?struct Node *RChild;
}BiTNode, *BiTree;?

必考點!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!二叉樹的遍歷!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

遍歷規則:大致按照左中右,然后先/中/后序列代表著訪問根的先后順序,先序就先訪問?
先序遍歷:先遍歷根,再左子樹,再右子樹.
中序遍歷:先遍歷左子樹,再根,再右子樹.
后序遍歷:...

應用廣泛:表達式求值-->前綴表達式為波蘭表達式, 后綴表達式為逆波蘭表達式,后綴表達式易于求值

遞歸算法:
先/中/后序遍歷只是訪問根結點先后順序不一樣而已

//二叉樹的遍歷
//先序遍歷 DLR?

void PreOrder(BiTree root){
?? ?if(root != NULL){
?? ??? ?Visit(root->data);
?? ??? ?PreOrder(root->LChild);
?? ??? ?PreOrder(root->RChild);
?? ?}
}
//中序遍歷 LDR?
void InOrder(BiTree root){
?? ?if(root != NULL){
?? ??? ?InOrder(root->LChild);
?? ??? ?Visit(root->data);
?? ??? ?InOrder(root->RChild);
?? ?}
}

//后序遍歷 LRD
void PostOrder(BiTree root){
?? ?if(root != NULL){
?? ??? ?PostOrder(root->LChild);
?? ??? ?PostOrder(root->RChild);
?? ??? ?Visit(root->data);?
?? ?}
}

//輸出二叉樹中的結點
void PreOrder(BiTree root){
?? ?if(root != NULL){
?? ??? ?printf(root->data);
?? ??? ?PreOrder(root->LChild);
?? ??? ?PreOrder(root->RChild);
?? ?}
}
//輸出二叉樹中的葉子結點?
//先序遍歷
void PreOrder(BiTree root){
?? ?if(root!= NULL){
?? ??? ?if(root->LChild == NULL && root->RChild == NULL)
?? ??? ??? ?printf(root->data);
?? ??? ?PreOrder(root->LChild);
?? ??? ?PreOrder(root->RChild);
?? ?}
}?

//統計葉子節點的數目
//法1
//設置全局變量!!!!
int LeafCount = ?0;
void leaf(BiTree root)
{
?? ?leaf(root->LChild);
?? ?leaf(root->RChild);
?? ?if(root->LChild ==NULL && root->RChild == NULL){
?? ??? ?LeafCount++;
?? ?}
?}?
?
?//法2 分治算法 這個有點妙!?
int leaf(BiTree root)
{
?? ?if(root == NULL)
?? ??? ?LeafCount = 0;
?? ?else if(root->LChild == NULL || root->RChild == NULL){
?? ??? ?LeafCount++;
?? ?}?
?? ?else
?? ??? ?LeafCount = leaf(root->LChild) + leaf(root->RChild);
?? ?return LeafCount;
?}?
?
//建立二叉樹鏈表方式儲存二叉樹
//擴展先序遍歷方式創建二叉樹鏈表
原理:一棵樹先序遍歷得到結點的所有值;那么一堆值根據先序遍歷得到樹?
void CreatBiTree(BiTree *bt){
?? ?char ch;
?? ?ch = getchar();
?? ?
?? ?if(ch == '.')
?? ??? ?*bt = NULL;
?? ?else{
?? ??? ?*bt = (BiTree) malloc(sizeof(BiNode));
?? ??? ?(*bt)->data = ch;
?? ??? ?CreateBiTree(&(*bt)->LChild) ;
?? ??? ?CreateBiTree(&((*bt)->RChild);
?? ?}
}?

//求二叉樹的高度
//后序遍歷, 求高度, 遞歸
int PostTreeDepth(BiTree bt)
{
?? ?int hl, hr, max;
?? ?if(bt != NULL){
?? ??? ?hl = PostTreeDepth(bt->LChild);
?? ??? ?hr = PostTreeDepth(bt->RChild);
?? ??? ?max = hl > hr ? hl : hr;//三元運算符?
?? ??? ?return max +1 ;
?? ?}
?? ?else
?? ??? ?return 0;
?}?
?
//先序遍歷實現
int depth = 0;
void PreTreeDepth(BiTree bt, int h){
?? ?if(bt != NULL){
?? ??? ?if(h > depth)?
?? ??? ??? ?depth = h;
?? ??? ?PreTreeDepth(bt->LChild, h+1);
?? ??? ?PreTreeDepth(bt->RChild, h+1);
?? ?}
}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!二叉樹的層次遍歷算法!!!!!!!!!!!!!很可能大題
void LevelOrder(BiTree bt){
?? ?BiTree Queue[MAX]; ? ? ? ? ? ?//將隊列與二叉樹結合, 重點!!!!
?? ?int front, rear;
?? ?
?? ?if(bt == NULL) return;
?? ?front = rear = 0;
?? ?
?? ?Queue[rear] = bt;//根節點入隊,隊尾入隊哈!
?? ?rear++;//尾指針移走
?? ?
?? ?//當front!=rear即隊列不為空
?? ?while(rear != front){
?? ??? ?printf("%d", Queue[front]);//visit(xxx);//訪問剛剛出隊的元素?
?? ??? ?if(Queue[front]->LChild){
?? ??? ??? ?Queue[rear] = Queue[front]->LChild;//存在左孩子則入隊?
?? ??? ??? ?rear++;?
?? ??? ?}
?? ??? ?if(Queue[front]->RChild){
?? ??? ??? ?Queue[rear] = Queue[front]->RChild;
?? ??? ??? ?rear++;?
?? ??? ?}
?? ??? ?front++;//出隊的最后操作?
?? ?}?
}?

//基于棧的遞歸消除
//中序遍歷二叉樹的非遞歸算法
void inorder(BiTree root){
?? ?Stack s[m];
?? ?int top = 0;
?? ?BiTNode *p;
?? ?
?? ?p = root;
?? ?
?? ?do{
?? ??? ?while(p != NULL){
?? ??? ??? ?if(top > m)?
?? ??? ??? ??? ?return;
?? ??? ??? ??? ?// 棧滿
?? ??? ??? ?top++;
?? ??? ??? ?s[top] = p;
?? ??? ??? ?p = p->LChild;
?? ??? ??? ?//遍歷左子樹?
?? ??? ?}
?? ??? ?if(top != 0){//棧空為0?
?? ??? ??? ?p = s[top];
?? ??? ??? ?top--;
?? ??? ??? ?Visit(p->data);
?? ??? ??? ?p = p->RChild;
?? ??? ?}
?? ??? ?
?? ?}while(p != NULL || top != 0);
?? ?//當前結點存在則入棧, 然后遍歷左子樹
?? ?//不在, 退棧, 訪問右子樹?
}?

//法2
//中序遍歷非遞歸算法
void Inorder(BiTree root)
{
?? ?Stack s;
?? ?InitStack(&s);
?? ?BiTNode *p = root;
?? ?
?? ?while(p != NULL || !IsEmpty(S))
?? ?{//棧空, p指向NULL, 結束?
?? ??? ?if (p){
?? ??? ??? ?Push(&S, p);
?? ??? ??? ?p = p->LChild;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?Pop(&s, &p);
?? ??? ??? ?Visit(p->data);
?? ??? ??? ?p = p->RChild;
?? ??? ?}
?? ?}
?}?
?
//后序遍歷二叉樹的非遞歸算法
void PostOrder(BiTree root){
?? ?BiTNode *p, *q;
?? ?Stack S;
?? ?q = NULL;
?? ?p = root;
?? ?Init(&Stack);
?? ?
?? ?while(p != NULL || !IsEmpty(S)){
?? ??? ?if(p){
?? ??? ??? ?Push(&S, p);
?? ??? ??? ?p = p->LChild;
?? ??? ?}?
?? ??? ?else{
?? ??? ??? ?GetTop(&S, &p);
?? ??? ??? ?if(p->RChild == NULL || p->RChild == q){//第二個條件判斷是否也已經遍歷過.類似于指針跟蹤技術?
?? ??? ??? ??? ?visit(p->data);
?? ??? ??? ??? ?q = p;
?? ??? ??? ??? ?Pop(&S, &p);
?? ??? ??? ??? ?p = NULL;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ??? ?p = p->RChild;
?? ??? ?}
?? ?}
}?

//后序遍歷法2
void PostOrder(BiTree root){
?? ?Stack st;
?? ?BiTNode *p, *q, *r;
?? ?p = root;
?? ?InitStack(&st);
?? ?bool flag;
?? ?
?? ?do{
?? ??? ?while(p != NULL){
?? ??? ??? ?Push(&st, &p);
?? ??? ??? ?p = p->LChild;
?? ??? ?}
?? ??? ?r = NULL;
?? ??? ?flag = true;
?? ??? ?
?? ??? ?while(!IsEmpty(st) && flag){
?? ??? ??? ?GetTop(&st, &p);
?? ??? ??? ?if(p->RChild == r){
?? ??? ??? ??? ?Visit(p->data);
?? ??? ??? ??? ?Pop(&st, &p);
?? ??? ??? ??? ?r = p;
?? ??? ??? ?}
?? ??? ??? ?else{
?? ??? ??? ??? ?p = p->LChild;
?? ??? ??? ??? ?flag = false;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ?}while(!IsEmpty(st));
?? ?DestroyStack(st);
}?


線索二叉樹:
原理:n個結點的二叉樹有2n個鏈域,而只有n-1條邊(離散),n+1個鏈空浪費?

// LChild Ltag data Rtag RChild

typedef struct Node{
?? ?int data;
?? ?struct Node *LChild;
?? ?struct Node *RChild;
?? ?
?? ?int Rtag;//0,指示結點的右孩子,1指示結點的遍歷后繼?
?? ?int Ltag;//0,指示結點的左孩子,1指示結點的遍歷前驅?
}BiTNode, *BiTree;


void Inthread(BiTree root){
?? ?if(root != NULL){
?? ??? ?Inthread(root->LChild);//線索化左子樹?
?? ??? ?if(root->LChild == NULL){
?? ??? ??? ?root->Ltag = 1;
?? ??? ??? ?root->LChild = pre;
?? ??? ?}
?? ??? ?if(pre != NULL && pre->RChild ==NULL){
?? ??? ??? ?pre->RChild = root;
?? ??? ??? ?pre->Rtag = 1;
?? ??? ?}
?? ??? ?pre = root;
?? ??? ?Inthread(root->RChild);
?? ?}
}?

//在中序線索樹中找結點前驅
BiTNode *InPre(BiTNode *p){
?? ?BiTNode *q, *pre;
?? ?if(p->Ltag == 1)?
?? ??? ?pre = p->LChild;
?? ?else{
?? ??? ?//在p的左子樹中找最右下端點
?? ??? ?for(q = p->LChild; q->Rtag == 0; q = q->RChild)
?? ??? ??? ?;
?? ??? ?pre = q;?
?? ?}
?? ?return pre;
}


//在中序線索樹中找后繼結點?
BiTNode* InNext(BiTNode *p){
?? ?if(p->Rtag == 1){
?? ??? ?Next = p->RChild;
?? ?else{
?? ??? ?for(q = p->RChild; q->Ltag == 0; q = q->LChild)
?? ??? ??? ?;?? ?
?? ??? ?Next = q;
?? ?}
?? ?return Next;
?? ?}
}

//找中序遍歷線索樹第一個節點
BiTNode *InFirst(BiTNode *p){
?? ?if(!p) return NULL;
?? ?while(p->Ltag == 0) p = p->LChild;
?? ?return p;
}
//遍歷中序線索二叉樹
void TInOrder(BiTNode Bt){
?? ?BITNode *p;
?? ?p = InFirst(Bt);
?? ?while(p){
?? ??? ?visit(p);
?? ??? ?p = InNext(p);
?? ?}
}?

遍歷確定二叉樹:只有先序+中序, 后序+中序可以
嘗試還原: 先序 ABCDEFGHI
?? ??? ? ?中序 BCAEDGHFI
?? ??? ? ?二叉樹參考:
?? ??? ? ??? ?A
?? ??? ?B------------D
?? ??? ? -C ? ??? ?E----------F
?? ??? ? ?? ??? ??? ??? ?-G------I
?? ??? ? ?? ??? ??? ??? ? ?-H

樹的存儲結構:?

//雙親表示法?
typedef struct TNode{
?? ?int data;
?? ?int parent;
}TNode;

typedef struct{
?? ?TNode tree[MAX];
?? ?int nodenum;
}ParentTree;

//孩子兄弟表示法 重點!!!?
typedef DataNode int
typedef struct ChildNode{//孩子鏈表結點定義?
?? ?int Child;
?? ?struct ChildNode *next;
}ChildNode;

typedef struct{//順序表結點定義?
?? ?DataNode data;
?? ?ChildNode *FirstChild;
}DataNode;

typedef struct{
?? ?DataNode nodes[MAX];
?? ?int root;
?? ?int num;
}ChildTree;

//孩子表示法?
tepedef struct CSNode{
?? ?int data;
?? ?struct CSNode *FirstChild;
?? ?struct CSNode *NextChild;
}CSNode, *CSTree;?


森林,樹,二叉樹:
任意樹轉化為二叉樹:兄弟加平行線,刪右側加線端點的與雙親的連線,旋轉?
森林轉化二叉樹:第一顆二叉樹不懂,后面的二叉樹的根依次作為二前一棵二叉樹的右孩子?

注意:樹的先根遍歷-->轉換后二叉樹的先序遍歷
?? ? 樹的后根遍歷-->轉換后二叉樹的中序遍歷?
?
樹的遍歷算法://孩子兄弟鏈表實現對樹的先根遍歷?
void RootFirst(CSTree root){
?? ?if(root != NULL){
?? ??? ?Visit(root->data);
?? ??? ?p = root->FirstChild;
?? ??? ?while(p != NULL)
?? ??? ?{
?? ??? ??? ?RpptFirst(p);
?? ??? ??? ?p = p->NextSbling;
?? ??? ?}
?? ?}
}?

void RootFirst(CST root){
?? ?if(root != NULL){
?? ??? ?Visit(root->data);
?? ??? ?RootFirst(root->FirstChild);
?? ??? ?RootFirst(root->NextSibling);
?? ?}
}

哈夫曼樹:帶權葉子節點構成路徑長度最短的二叉樹,稱最優二叉樹?
路徑,路徑長度,結點的權,帶權路徑長度
類型定義:
#define N 20
#define M 2 * N -1
typedef struct{
?? ?int weight;
?? ?int parent;
?? ?int LChild;
?? ?int RChild;
}HTNode, HuffmanTree[M+1];

//Create the Tree
void CrtHuffmanTree(HuffmanTree ht, int w[], int n){
?? ?//create ht[M+1], w[]存放n個權值
?? ?for(i = 1; i <= n; i++)
?? ??? ?ht[i] = {w[i], 0, 0, 0};
?? ?//Attention, start from 1, not 0 . So the length of ht is M + 1, not M.
?? ?for(i = n + 1; n <= M; i++)
?? ??? ?ht[i] = {0, 0, 0, 0};
?? ??? ?
?? ?for(i = n + 1; i <= M; i++){
?? ??? ?select(ht,i-1, &s1, &s2);
?? ??? ?//從ht[1]~ht[i-1]中選擇兩個parent = 0且weight最小的結點, 其序號賦值給s1, s2
?? ??? ?ht[i].weight = ht[s1].weight + ht[s2].weight;
?? ??? ?ht[s1].parent = i;
?? ??? ?ht[s2].parent = i;
?? ??? ?ht[i].LChild = s1;
?? ??? ?ht[i].RChild = s2;
?? ?}
}?

//對于第三個for 循環如下
for(i = n + 1; i <= M;i++ ){
?? ?s1 = s2 = 32767;
?? ?Inode = rnode = -1;
?? ?for(k = 0; k <= i -1 ;k++){
?? ??? ?if(ht[k].parent == -1){
?? ??? ??? ?if(ht[k].weight<= s1){
?? ??? ??? ??? ?s2 = s1; rnode = Inode;
?? ??? ??? ??? ?s1 = ht[k].weight; Inode = k;
?? ??? ??? ?}
?? ??? ??? ?else if(ht[k].weight <= s2){
?? ??? ??? ??? ?s2 = ht[k].weight; rnode = k;
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

//哈夫曼編碼_不用管,下一個可以看看?
void encoding(HuffmanTree ht, HuffmanCode hc, int n){
?? ?//n 為葉子結點個數
?? ?int start = n - 1;
?? ?char *cd;
?? ?cd = (char *)malloc((n + 1) * sizeof(char)); //暫時存入字符編碼的字符數組?
?? ?cd[n] = '\0';
?? ?for(i = 1; i <= n; i++){
?? ??? ?start = n;
?? ??? ?c = i;
?? ??? ?p = ht[i].parent;
?? ??? ?while(p != -1){
?? ??? ??? ?start--;
?? ??? ??? ?if(ht[p].LChild == c)
?? ??? ??? ??? ?cd[start] = '0';
?? ??? ??? ?else
?? ??? ??? ??? ?cd[start] = '1';
?? ??? ??? ?c = p;
?? ??? ??? ?p = ht[p].parent;//倒著存入的思想?
?? ??? ?}
?? ??? ?hc[i] = (char *)malloc((n+1-start) * sizeof(char));
?? ??? ?strcpy(hc[i], &cd[start]);
?? ??? ?cd = {'\0'};
?? ?}
?? ?free(cd);?
}?

#define LEN 100
typedef struct{
?? ?char ch;?? ??? ?//存儲字符?
?? ?char code[LEN]; //存放編碼?
}TCode;//每個字符都對應唯一編碼,因為哈夫曼樹為前綴編碼?
TCode CodeBook[LEN];//編碼本?

//哈夫曼編碼算法_2?
void encoding1(HTNode ht[], TCode book[], int n){
?? ?char *str = (char *)malloc((n + 1) * sizeof(char));//存放編碼?
?? ?str[n] = '\0';
?? ?int i, j, idx, p;
?? ?//哈夫曼樹某個葉結點下標idxa,用parent找到父節點idxb?
?? ?for(i = 0; i < n; i++){//依次求葉子結點ht[i]的編碼?
?? ??? ?book[i].ch = ht[i].ch;
?? ??? ?idx = i;
?? ??? ?j = n;
?? ??? ?while(p = ht[idx].parent > 0){
?? ??? ??? ?if(ht[p].LChild == idx){
?? ??? ??? ??? ?j--;
?? ??? ??? ??? ?str[j] = '0';//左孩子?
?? ??? ??? ?}
?? ??? ??? ?else{
?? ??? ??? ??? ?j--;
?? ??? ??? ??? ?str[j] = '1';//右孩子?
?? ??? ??? ?}
?? ??? ??? ?idx = p;// idx 為下一輪找雙親的孩子,因為p = ht[idx].parent;?
?? ??? ?}
?? ??? ?strcpy(book[i].code, &str[j]);
?? ?}
}
//解碼運算算法?
void decoding(HTNode ht[], char *codes, int n){
?? ?int p = 2 * n -2;//p為表中最后一個結點的指針, (總共2n-1個結點, 0開始), ht[p]代表root
?? ?int i, j;
?? ?i = 0;
?? ?while(codes[i]!= '\0'){
?? ??? ?while(ht[p].LChild !=-1 && ht[p].RChild != -1){
?? ??? ??? ?if(codes[i] == '0')
?? ??? ??? ??? ?p = ht[p].LChild;
?? ??? ??? ?else
?? ??? ??? ??? ?p = ht[p].LChild;
?? ??? ??? ?i++;
?? ??? ?}
?? ??? ?printf("%c", ht[p].ch);
?? ??? ?p = 2 * n -2;
?? ?}?
}

第六章總結:

存儲結構:
二叉樹采用順序儲存與二叉鏈表儲存
哈夫曼樹概念,了解相關實現.?
遍歷必考!

//icoding例題?
假設二叉樹采用二叉鏈表方式存儲, root指向根結點,node 指向二叉樹中的一個結點,
編寫函數 path,計算root到 node 之間的路徑,(該路徑包括root結點和 node 結點)。path 函數聲明如下:
bool path(BiTNode* root, BiTNode* node, Stack* s);
其中,root指向二叉樹的根結點,node指向二叉樹中的另一結點,s 為已經初始化好的棧,
該棧用來保存函數所計算的路徑,如正確找出路徑,則函數返回 true,此時root在棧底,node在棧頂;
如未找到,則函數返回 false, 二叉樹的相關定義如下:
typedef int DataType;
typedef struct Node{
? ? DataType data;
? ? struct Node* left;
? ? struct Node* right;
}BiTNode, *BiTree;
棧的相關定義及操作如下:
#define Stack_Size 50
typedef BiTNode* ElemType;
typedef struct{
? ? ElemType elem[Stack_Size];
? ? int top;
}Stack;
void init_stack(Stack *S); // 初始化棧
bool push(Stack* S, ElemType x); //x 入棧
bool pop(Stack* S, ElemType *px); //出棧,元素保存到px所指的單元,函數返回true,棧為空時返回 false
bool top(Stack* S, ElemType *px); //獲取棧頂元素,將其保存到px所指的單元,函數返回true,棧滿時返回 false
bool is_empty(Stack* S); ?// 棧為空時返回 true,否則返回 false


#include "bitree.h" //請不要刪除,否則檢查不通過
#include
#include

bool path(BiTNode* root, BiTNode* node, Stack* s)
{
? ? BiTNode *p, *q;?
? ? int i = 0;

? ? p = root;
? ? q = NULL;
? ? init_stack(s);

? ? if (p == NULL || node == NULL)
? ? ? ? return false;
? ? if (p == node) {
? ? ? ? push(s, p);
? ? ? ? return true;
? ? }

? ? while (p != NULL || !is_empty(s)) {
? ? ? ? while (p) {
? ? ? ? ? ? push(s, p);
? ? ? ? ? ? if (p == node)
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? p = p->left;
? ? ? ? }
? ? ? ? top(s, &p);?
? ? ? ? if (p->right == q || p->right == NULL) {
? ? ? ? ? ? q = p;
? ? ? ? ? ? pop(s, &p);
? ? ? ? ? ? p = NULL;?
? ? ? ? } else {
? ? ? ? ? ? p = p->right;
? ? ? ? }
? ? }

? ? return false;
}


第七章 圖

概念:vertex, head, arc, tail, edge.子圖,鄰接點,鄰接邊,度,入/出度,網,路徑長度,回路,連通圖....?
分類:稀疏圖,完全圖,稠密圖

圖的存儲結構://重點

//鄰接表?
//分為表頭結點表和邊表
//前者是一個指針類型的結構數組 每一個結構包括結點域和鏈域
//邊表儲存弧結點, 弧結點結構分為三個域, 第一個儲存弧結點相關信息,?
//第二個一般可以儲存權重, 第三個鏈域存表頭結點的下一個鄰結點的弧?

#define MAX_VERTEX_NUM 20
typedef enum{DG, DN, UDG, UDN
} GraphKind;
typedef char VertexData

typedef struct ArcNode{//弧結點?
?? ?int adj;
?? ?int info;?
?? ?struct ArcNode *nextarc;//指向下一條弧的指針?
}ArcNode;

typedef struct VertexNode{//表頭結點?
?? ?VertexData data;
?? ?ArcNode *firstarc;
}VertexNode;

typedef struct{
?? ?VertexNode vertex[MAX_VERTEX_NUM];
?? ?int vexnum, arcnumber;
?? ?GraphKind kind;
}AdjList;


//鄰接矩陣
#define MAX_VERTEX_NUM 20
#define IFINITY
typedef enum{DG, DN, UDG, UDN
} GraphKind;
typedef char VertexData
typedef struct ArcNode{
?? ?int adj;
}ArcNode;
typedef struct{
?? ?VertexData vertex[MAX_VERTEX_NUM];
?? ?ArcNode arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
?? ?int vexnum, arcnumber;
?? ?GraphKind kind;
}AdjMatrix;

//求頂點位置函數?
int LocateVertex(AdjMatrix *G, VertexData v){
?? ?int i = 0;
?? ?for(; i < G->vexnum; i++){
?? ??? ?if(G->vertex[i] == v)
?? ??? ??? ?return i;?
?? ?}
?? ?return -1;
}
//創建一個有向網?
int CreateDN(AdjMatrix *G){
?? ?
?? ?int vexnum, arcnum;
?? ?VertexData v1, v2;
?? ?int i, j, k, weight;
?? ?
?? ?scanf("%d, %d", &vexnum, &arcnum);
?? ?for(i = 0; i< G->vexnum; i++)
?? ??? ?scanf("%c", &G->vertex[i]);
?? ?for(i = 0; i < G->vexnum; i++)
?? ??? ?for(j = 0; j < G->vexnum; j++)
?? ??? ??? ?G->arc[i][j] = IFINITY;
?? ?for(k = 0; k < G->arcnumber; k++){
?? ??? ?scanf("%c, %c, %d", &v1, &v2, &weight);
?? ??? ?i = LocateVertex(G, v1);
?? ??? ?j = LocateVertex(G, v2);
?? ??? ?G->arc[i][j] = weight;
?? ?}
?? ?return OK;
}

//十字鏈表?
#define MAX_VERTEX_NUM 20
typedef enum{DG, DN, UDG, UDN
} GraphKind;
typedef char VertexData
typedef struct ArcNode{
?? ?int tailvex; ? //儲存當前結點信息?
?? ?int headvex;?? ?//儲存下一個結點信息?
?? ?struct ArcNode *hlink;//入度?
?? ?struct ArcNode *tlink;//出度, 相當于鄰接表?
?? ?int info; ?? ??? ?//可以存權?
}ArcNode;
typedef struct VertexNode{
?? ?VertexData data;?? ?//頂點信息?
?? ?ArcNode *firstin;?? ?//入度的第一條弧//以該頂點為弧頭的第一個弧頂點?
?? ?ArcNode *firstout; ?//以該頂點為弧尾的第一個弧頂點?
}VertexNode;

typedef struct{
?? ?VertexNode vertex[MAX_VERTEX_NUM];
?? ?int vexnum, arcnum;
?? ?GraphKind kind;
}OrthList;

//創建十字鏈表算法?
void CrtOrthList(OrthList *g){
?? ?
?? ?int vexnum, arcnum;
?? ?int i, j, k;
?? ?VertexData vh, vt;
?? ?ArcNode *p;
?? ?
?? ?scanf("%d, %d", &vexnum, &arcnum);
?? ?g->vexnum = vexnum; g->arcnum = arcnum;
?? ?
?? ?for(i = 0; i < vexnum; i++){
?? ??? ?scanf("%c", &(g->vertex[i].data));
?? ??? ?g->vertex[i].firstin = NULL;
?? ??? ?g->vertex[i].firstout = NULL;?
?? ?}
?? ?
?? ?for(k = 0; k < arcnum; k++){
?? ??? ?scanf("%c, %c", &vh, &vt);
?? ??? ?i = LocateVertex(g, vt);
?? ??? ?j = LocateVertex(g, vh);
?? ??? ?p = (ArcNode *)malloc(sizeof(ArcNode));
?? ??? ?p->tailvex = i;
?? ??? ?p->headvex = j;
?? ??? ?//類似于頭插?
?? ??? ?p->tlink = g->vertex[i].firstout;
?? ??? ?g->vertex[i].firstout = p;
?? ??? ?p->hlink = g->vertex[j].firstin;
?? ??? ?g->vertex[j].firstin = p;
?? ?}
}


//鄰接多重表?
//鄰接多重表與鄰接表不同, 前者主要記錄邊的信息
//該表有標志域, 記錄是否被搜索過, 兩個頂點, 分別與兩個頂點關聯的邊?
#define MAX_VERTEX_NUM 20
typedef enum{DG, DN, UDG, UDN
} GraphKind;
typedef char VertexData
typedef struct EdgeNode{
?? ?int mark;
?? ?int ivex, jvex;
?? ?struct EdgeNode *ilink;
?? ?struct EdgeNode *jlink;//用于指向下一條依附于頂點jvex的邊 //頂點的鄰接邊?
}EdgeNode;
typedef struct{
?? ?VertexData data;
?? ?EdgeNode *firstedge;?
}VertexNode;
typedef struct{
?? ?VertexNode vertex[MAX_VERTEX_NODE];
?? ?int arcnum, vexnum;
?? ?GraphKind kind;
}AdjMulList;


總結:?
//鄰接矩陣:二維數組, 一維數組組成, 鄰接矩陣存是否兩個頂點之間有邊?
//鄰接表:頂點指針結構數組, 弧結點構成以頂點為頭結點的鏈表 , 節省稀疏圖對鄰接矩陣造成的的空間浪費?
//鄰接多重表:標志域, 兩個結點域, 兩個鏈域分別對應域兩個頂點的鄰接邊信息?
//十字鏈表: 鄰接表和逆鄰接表的結合, 每一個結點有兩個鏈域存出度和入度信息, 兩個數據域存結點信息?
?

總結

以上是生活随笔為你收集整理的第二个一千行总结-数据结构C复习--知识点总结2--五到七章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

视频在线播放国产 | 亚洲视频精品在线 | 黄色在线视频网址 | 成人av高清在线 | a久久久久久 | 国产精品成人久久久久久久 | 国产九九精品视频 | 久久这里只精品 | av高清一区二区三区 | 亚洲男男gaygay无套同网址 | 91麻豆精品91久久久久同性 | 在线中文视频 | 国产尤物一区二区三区 | 在线观看国产日韩欧美 | 国产黄色片免费看 | 黄网站色成年免费观看 | 久久国产精品精品国产色婷婷 | 国产精久久久久久妇女av | 国产精品久久久久9999 | 国产精品黄色影片导航在线观看 | 久久视讯 | 日韩有码在线观看视频 | 欧美精品生活片 | 亚洲黄色一级视频 | 美女精品在线 | 99婷婷| 日韩精品一区二区三区不卡 | 色婷婷成人网 | 国产亚洲视频在线免费观看 | 国产在线精品观看 | www.夜夜操.com| 亚洲春色综合另类校园电影 | 亚洲午夜精品一区二区三区电影院 | 久久天天综合网 | 99久久久国产精品免费99 | 久久99免费 | 日韩特黄av | 九九有精品 | 免费合欢视频成人app | 黄色毛片在线观看 | 丝袜足交在线 | 在线国产专区 | 欧美日韩午夜 | 999成人免费视频 | 精品亚洲一区二区三区 | 中文一区在线 | 国产亚洲精品无 | 成人福利在线观看 | 亚洲精品色 | 五月天久久久久 | www.色午夜.com | 国产成人在线观看免费 | 久久久久久久久久久久影院 | 国产精品资源网 | 成人中文字幕+乱码+中文字幕 | 丁香婷婷激情五月 | 亚洲免费视频在线观看 | 午夜12点| 国产美女精品视频 | 九九免费在线观看 | 久久久久观看 | 日韩理论电影网 | 综合网成人 | 国产成人精品av在线 | 欧美日韩在线视频观看 | 欧美大片aaa| 亚洲精品一区二区网址 | www.久艹 | 中文字幕人成乱码在线观看 | 91高清不卡| 中文字幕在线观看一区二区三区 | 黄色大片免费网站 | 99精品系列| 久久99九九99精品 | 亚洲综合一区二区精品导航 | 午夜在线国产 | 亚洲作爱 | 99色在线观看视频 | 夜夜躁日日躁狠狠久久88av | 99久久久久免费精品国产 | 一区二区三区四区精品视频 | 亚洲日本韩国一区二区 | 在线97| 91黄色小网站| 国产精品一区二区三区在线播放 | 日本公乱妇视频 | 麻豆果冻剧传媒在线播放 | 91成人短视频在线观看 | 蜜桃视频成人在线观看 | 国产一区二区三区久久久 | 99精品国产视频 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 粉嫩av一区二区三区四区 | 天天操天天干天天 | 亚洲综合五月天 | 碰天天操天天 | 91精品国产91p65 | 五月婷综合| 99热高清| 中文字幕永久在线 | 国产一区欧美一区 | 337p日本大胆噜噜噜噜 | 成人va在线观看 | 福利一区二区在线 | 成人a在线观看高清电影 | 精品福利在线观看 | 不卡的av电影在线观看 | 国产精品视频免费观看 | 国产.精品.日韩.另类.中文.在线.播放 | 国产日韩欧美自拍 | 国产亚洲视频在线观看 | 一级片免费在线 | 久久人人精 | 超碰在线亚洲 | 国产成人精品一区二区在线观看 | 欧美日本一区 | 精品国自产在线观看 | 中文字幕在线观看视频网站 | 精品国产免费久久 | 深爱激情五月网 | 欧美a级免费视频 | 黄色大片日本免费大片 | 亚洲深夜影院 | 少妇bbb搡bbbb搡bbbb | 综合色中色 | 亚州天堂 | 成人免费视频视频在线观看 免费 | 天天躁日日| 日韩极品在线 | 中文字幕一区二区三区久久蜜桃 | www.com久久久 | 久久看片网站 | 麻豆国产在线播放 | 激情婷婷色 | 韩国精品一区二区三区六区色诱 | 91成人国产 | 精品在线99 | 欧美在线free| www.888av| 中文字幕乱码日本亚洲一区二区 | 亚洲精品视频在线观看免费 | 日本系列中文字幕 | 最新国产在线视频 | 97在线观看免费观看高清 | 免费国产在线观看 | 91精品伦理 | 97电院网手机版 | 天天干天天操人体 | 国产精品一区二区久久 | 色福利网 | 成人免费视频网 | 国产视频亚洲 | 日韩电影在线观看一区二区 | 色婷婷亚洲综合 | 日韩在线视频观看 | 久久综合影视 | av中文电影 | 9免费视频 | 最新高清无码专区 | 国产中文字幕一区二区 | 国产综合视频在线观看 | 蜜臀av性久久久久av蜜臀妖精 | 久久久www成人免费精品 | 91精品推荐 | 99久久99久久精品国产片 | 婷婷久久婷婷 | av福利在线播放 | av在线h | 天天草天天爽 | 99久久久国产精品免费99 | 午夜精品一区二区三区免费 | 国产成人精品aaa | av网站播放 | 三级a视频 | 欧洲黄色片 | 黄色片网站免费 | 黄色网址在线播放 | 欧美日韩精品在线视频 | 成年人av在线播放 | 国产男男gay做爰 | 欧美日韩国产精品一区二区 | 亚洲欧美精品一区 | 色福利网站 | 国产一线在线 | 免费看十八岁美女 | 91大神精品视频在线观看 | 久草在线免 | 婷婷电影在线观看 | 二区视频在线 | 欧美日韩免费一区二区 | 九九热免费精品视频 | 天天操天天射天天 | 一区二区视频在线播放 | 久久久久久免费毛片精品 | 欧美一级看片 | 国产 视频 高清 免费 | av在线影视 | 国产精品久久精品 | av高清在线 | 这里只有精品视频在线观看 | 欧美日本高清视频 | 久久国内视频 | 2021国产在线 | 天天干天天做天天爱 | 91精品在线免费 | 黄色成人影院 | 亚洲尺码电影av久久 | 国产网站av | 天天操网 | 中中文字幕av | 欧美一级特黄aaaaaa大片在线观看 | 伊人成人精品 | 私人av| 欧美色综合 | 欧美日韩国产精品一区二区亚洲 | 天天爱天天操天天射 | 国产精品私人影院 | av电影一区| 久操操| 一区二区三区国产精品 | 免费观看xxxx9999片 | 精品国产免费久久 | 我要看黄色一级片 | 国产黄色高清 | 在线观看视频在线观看 | 天天干天天干天天色 | 天天搞夜夜骑 | 欧美日韩一区二区久久 | 黄色大片日本免费大片 | av中文字幕在线观看网站 | 国产成人61精品免费看片 | 日韩久久久久久久 | 亚洲国产日韩欧美在线 | 久久色网站 | 日韩欧美视频在线观看免费 | 人人搞人人干 | 97视频人人澡人人爽 | 国产一区免费 | 色偷偷88888欧美精品久久久 | 黄色app网站在线观看 | 超碰在线91 | 色av男人的天堂免费在线 | 久久综合九色综合欧美狠狠 | 欧美一级片免费播放 | 婷婷六月综合网 | www.av在线播放 | 91桃色在线免费观看 | 天天综合五月天 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 超碰97久久 | 99久久电影 | 激情五月播播久久久精品 | 狠狠艹夜夜干 | 国产精选在线观看 | 久久久久久久久国产 | 麻豆一区在线观看 | 国产综合在线观看视频 | 久久精品一区二区三区中文字幕 | 91在线网址| 日韩三级在线观看 | 天天曰天天干 | 久久久国产一区二区三区四区小说 | 国产精品 美女 | 欧美激情精品久久 | 欧美大片第1页 | 91九色蝌蚪国产 | 日韩欧美亚洲 | 午夜在线看片 | 91在线观看视频网站 | 欧美一级片免费观看 | 一二区精品| 久草精品在线播放 | 在线观看日韩精品视频 | 亚洲丁香日韩 | 亚洲精品免费观看视频 | 丁香午夜婷婷 | 色婷婷综合久久久中文字幕 | 久久久久久免费网 | 欧美日韩一级久久久久久免费看 | 五月天亚洲综合 | 狠狠色丁香婷婷综合久小说久 | 久久久久亚洲精品中文字幕 | 日韩高清在线一区二区 | 91视频首页 | 91网站免费观看 | 日本久久久久久久久久 | 国产精品视频区 | 日韩三级视频在线观看 | av免费看在线 | 日韩视频免费看 | 日本大尺码专区mv | 91精品欧美一区二区三区 | 国产精品久久在线 | 制服丝袜在线91 | 99热只有精品在线观看 | 久久久久久久影院 | 九九国产视频 | 美女一区网站 | av免费网页 | 在线激情小视频 | 人人插人人费 | 亚洲不卡123 | 免费看片色 | 天天操天天干天天爱 | 玖玖精品在线 | 女人18片毛片90分钟 | 又爽又黄在线观看 | 人人澡人摸人人添学生av | 国产人免费人成免费视频 | 久久人人爽人人爽人人片av软件 | 成人av资源网站 | 在线观看不卡视频 | 精品国产一区二区三区在线观看 | 男女拍拍免费视频 | 久久久999| 日韩伦理一区二区三区av在线 | 国产精品久久久久av免费 | 精品一区精品二区高清 | 中文字幕在线日亚洲9 | 亚州精品一二三区 | av在线一 | 欧美久久久一区二区三区 | 日韩精品视频免费专区在线播放 | 激情网五月婷婷 | 国产黄色精品在线观看 | 在线观看一区视频 | 国产高清不卡一区二区三区 | 久久久久久久久久久久久久av | 91黄色免费看 | 欧美日韩在线免费观看视频 | 国产无吗一区二区三区在线欢 | 日韩国产精品久久久久久亚洲 | 国产一级特黄毛片在线毛片 | 午夜精品一区二区三区免费 | 96国产精品视频 | 成年人在线观看 | 麻豆成人精品 | 久草精品资源 | 国产一区视频在线播放 | 一区 在线 影院 | 亚洲成人黄色在线观看 | 亚洲天堂精品视频 | 亚洲精品18日本一区app | 欧美一区日韩一区 | 日韩精品一区二区三区免费观看视频 | 玖草在线观看 | 久草新在线 | 99视频精品免费观看, | 久久精品1区| 人人舔人人干 | 最新日本中文字幕 | 在线观看亚洲国产精品 | 毛片永久免费 | 日韩在线观看电影 | 欧美专区国产专区 | www..com毛片 | 婷婷天天色| 韩国精品福利一区二区三区 | 91香蕉视频在线 | 欧美xxxx性xxxxx高清 | 欧美日韩久 | 精品一区二区视频 | 国产精品手机在线播放 | 欧美在线视频日韩 | 97视频入口免费观看 | 激情久久综合网 | 色婷婷狠狠五月综合天色拍 | 伊人伊成久久人综合网小说 | 国产精成人品免费观看 | 激情综合网五月婷婷 | 亚洲欧美成人网 | 欧美亚洲另类在线视频 | 天天操天天操一操 | 精品国产视频一区 | 国产中文字幕在线免费观看 | 国产色久| 黄色av电影免费观看 | 在线观看精品一区 | 五月天中文在线 | 亚洲视屏在线播放 | av九九九 | 亚洲国产成人精品久久 | 麻豆国产精品永久免费视频 | 国产无区一区二区三麻豆 | 丁香国产视频 | 麻豆你懂的 | 99热播精品 | 日韩在线免费播放 | 91九色成人 | 性色av免费看 | 欧美aa级 | 亚州人成在线播放 | 天堂网在线视频 | 天天爱天天操天天干 | 天天天在线综合网 | 国产精品亚 | 97视频免费| 国产精品嫩草影视久久久 | 美女免费黄视频网站 | 亚洲五月婷 | 在线激情av电影 | 欧美激情视频在线观看免费 | 亚洲区另类春色综合小说校园片 | 日韩欧美在线视频一区二区三区 | 午夜视频在线瓜伦 | 亚洲永久精品在线观看 | 99精品一区二区 | 午夜精品久久久久久久99婷婷 | 亚洲精品视频在线观看视频 | 毛片黄色一级 | 国产精品av电影 | 亚洲午夜精品一区二区三区电影院 | 中文字幕在线视频免费播放 | 在线看的av网站 | 亚洲乱码精品久久久久 | 日韩电影在线观看一区 | 在线观看免费版高清版 | 在线观看的a站 | 欧美成人h版在线观看 | 天天干婷婷 | 日韩欧美黄色网址 | 2024国产精品视频 | 天天色婷婷 | 国产在线观看91 | 久久精品一区二区三 | 中文字幕国产在线 | 久久无码av一区二区三区电影网 | 国产精品色婷婷视频 | 精品国产精品久久 | 久久一区精品 | 欧美一二三区在线观看 | 久久中文视频 | a√天堂资源 | 久久男人免费视频 | 中文字幕在线看视频 | 欧美日韩国产综合一区二区 | 天天综合人人 | 精品国产欧美一区二区 | 国产aaa大片 | 97日日碰人人模人人澡分享吧 | 99精品国产一区二区三区不卡 | 一区二区亚洲精品 | 国产尤物在线视频 | 国产va精品免费观看 | 国产又粗又猛又黄又爽的视频 | 91精品国产综合久久福利不卡 | 国产无吗一区二区三区在线欢 | 国外av在线 | 久久丁香 | 国产精品日韩久久久久 | 综合久久五月天 | 久久久久久久久久久久久久免费看 | 97在线视频网站 | 亚洲电影黄色 | 免费观看一级一片 | 91香蕉亚洲精品 | 91精品无人成人www | 亚洲国产成人精品在线观看 | 欧美精品国产精品 | 四虎精品成人免费网站 | 天堂激情网| 99热最新在线 | 欧美一区二区三区在线视频观看 | 国语麻豆| 国产亚洲精品久久久久5区 成人h电影在线观看 | 久久黄网站 | 97碰在线视频 | 午夜99| 色综合天天狠天天透天天伊人 | 欧美激情视频一区 | 国产黄影院色大全免费 | 亚洲永久精品国产 | 久久99国产一区二区三区 | 国产在线观看免费观看 | 国产尤物一区二区三区 | 色伊人网 | 91成人在线网站 | 亚洲精品在线视频网站 | 日韩中文字幕免费在线播放 | 激情久久网 | 久9在线| 99免费精品 | 国内成人av | 国产综合激情 | av在线免费网站 | 久久男人中文字幕资源站 | 亚洲精品美女在线观看播放 | 爱干视频 | 亚洲精品播放 | 国产精在线 | 亚洲 精品在线视频 | 国产高清精品在线观看 | 91麻豆产精品久久久久久 | 中字幕视频在线永久在线观看免费 | 999国产精品视频 | 国产一区二区免费 | 五月婷婷欧美 | av在线播放免费 | 亚洲精品字幕在线观看 | 国产精品一区二区美女视频免费看 | 91在线免费视频 | 最近最新中文字幕 | 国产精品久久久久久五月尺 | 久久最新网址 | 日韩av不卡在线 | 欧美日韩伦理在线 | 天天干夜夜爱 | 久久综合九色九九 | 精品国产123| 又黄又爽又无遮挡免费的网站 | 久久久99精品免费观看 | 毛片永久新网址首页 | 日本久久久久久久久久久 | 日韩特级黄色片 | 在线观看亚洲视频 | 中文在线√天堂 | 久久久久久高清 | 婷婷丁香国产 | 亚洲一区二区三区毛片 | 中文字幕麻豆 | 在线高清av | 久久er99热精品一区二区三区 | 亚洲第一成网站 | 久久久96 | 国产婷婷久久 | 国产成人免费在线观看 | 国产 字幕 制服 中文 在线 | 久久国产成人午夜av影院潦草 | 日韩中文字幕免费在线观看 | 国产欧美在线一区二区三区 | 色妞久久福利网 | 国产成人一级 | 国产日韩欧美在线看 | 成人在线免费视频观看 | 国产成人精品久久亚洲高清不卡 | 91精品在线观看入口 | 免费激情网| 超碰人人乐| 黄色特级一级片 | 中文字幕资源站 | 成人 国产 在线 | 天天色 天天 | 国产精品原创av片国产免费 | 九九久久免费 | 天天操操操操操 | 国产精品一区二区在线免费观看 | 人人舔人人 | 欧美日韩一区二区在线观看 | 在线国产一区 | 欧美成人高清 | av网站播放 | 亚洲视频专区在线 | 在线视频一二区 | 国产视频 亚洲视频 | 日韩欧美成 | 国产黄在线看 | 亚洲一级片在线看 | 波多野结衣在线视频一区 | 999抗病毒口服液 | 亚洲蜜桃av| 欧美一区免费在线观看 | 国产精品美 | 最近中文字幕mv | 在线观看深夜视频 | www五月| 日韩xxx视频 | 久色免费视频 | 国产一级视频免费看 | 欧美狠狠色 | 美女国产精品 | 69精品视频在线观看 | 一区 二区电影免费在线观看 | 在线亚州| 天天操天天拍 | 美女啪啪图片 | 亚洲精品午夜久久久久久久久久久 | 亚洲成人av片在线观看 | 中文字幕在线观看播放 | 丁香视频全集免费观看 | 午夜三级理论 | 国产第一页精品 | 91色一区二区三区 | 中文字幕在线影视资源 | 欧美激情精品久久久久久免费 | 成人黄色免费在线观看 | 国内久久视频 | 国产 欧美 在线 | 97视频免费观看 | 国产成人在线免费观看 | 亚洲妇女av | 成人资源在线观看 | 国内精品久久久久久中文字幕 | 午夜视频在线观看一区二区 | 激情综合网在线观看 | 91av视频免费观看 | 国产精品自产拍 | 免费视频你懂的 | 很黄很污的视频网站 | 国产一级免费在线 | 久久午夜国产 | 91麻豆视频网站 | 手机色在线 | 色夜视频| 青青五月天 | 亚洲午夜精品电影 | 99热99re6国产在线播放 | 亚洲在线色 | 国产精品密入口果冻 | 国产不卡av在线播放 | 操老逼免费视频 | 国产精品免费视频网站 | 91精品国产92久久久久 | 亚洲码国产日韩欧美高潮在线播放 | 久久久久久久久久久久亚洲 | 四季av综合网站 | 亚洲精品影院在线观看 | 国产精品毛片一区二区三区 | 国产成人精品综合久久久 | 欧美精品免费在线 | 91豆花在线 | 中文字幕中文中文字幕 | 日韩av一区二区三区在线观看 | 日韩欧美视频免费看 | 五月婷在线 | 国产97免费 | 又长又大又黑又粗欧美 | 日韩欧美高清在线观看 | 五月天婷婷在线视频 | 久久不卡免费视频 | 亚洲精品国产精品99久久 | 国产人成免费视频 | 黄色大片入口 | 成人久久综合 | 久久久久久久久黄色 | 国产精品久久久久四虎 | 久久久精品 一区二区三区 国产99视频在线观看 | 精品美女在线视频 | 91麻豆精品国产91久久久无限制版 | 青草草在线视频 | 亚洲女欲精品久久久久久久18 | 日韩av快播电影网 | 久色 网| 992tv又爽又黄的免费视频 | 国产热re99久久6国产精品 | 久久激情视频免费观看 | 偷拍区另类综合在线 | 久久久免费视频播放 | 亚洲精品国产精品国自 | 亚洲一区av| 久久免费视频播放 | 国产在线小视频 | 亚洲伦理一区二区 | 欧美aa一级 | 97人人人| 久久国产精品99久久人人澡 | 日批网站在线观看 | 国产在线黄 | 亚洲在线高清 | 免费a现在观看 | 蜜臀久久99精品久久久酒店新书 | 91中文字幕| 在线观看www视频 | 色五月成人| 日本不卡123区 | 久久精品国产一区 | 日产乱码一二三区别在线 | 婷婷色吧 | 精品欧美一区二区三区久久久 | 国产精品xxxx18a99 | 色欧美成人精品a∨在线观看 | 中文字幕精品三级久久久 | 成人a级免费视频 | 国产成人精品av在线观 | 9999亚洲 | 国产一二区视频 | 美女视频黄的免费的 | 99r在线视频 | 欧美成人亚洲成人 | 亚洲精品免费观看 | 激情小说 五月 | 午夜 在线 | 国产福利在线不卡 | 日韩最新理论电影 | 亚洲精品系列 | 毛片1000部免费看 | 久久激情婷婷 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产精品九九视频 | 中文字幕日本特黄aa毛片 | 亚洲日韩中文字幕在线播放 | 国产精品久久久久久久婷婷 | 中文字幕高清视频 | 九九热久久久 | 福利一区二区三区四区 | 久久久久久久免费看 | 免费网址你懂的 | 九九免费在线观看视频 | 中文字幕三区 | 亚洲精品视频在线观看视频 | 性日韩欧美在线视频 | 国产精品免费成人 | 在线观看岛国av | 黄a网 | 最新日本中文字幕 | 91av短视频| 欧美高清视频不卡网 | 91精品秘密在线观看 | 国产精品久久一 | 亚洲黄色免费在线看 | 一区二区日韩av | 91在线在线观看 | 亚洲精品合集 | av电影在线观看完整版一区二区 | 国产精品一区专区欧美日韩 | 亚洲精品视频在线观看免费视频 | 亚洲欧美视频在线 | 精品一区二区日韩 | 免费在线色电影 | 国产九九精品视频 | 涩av在线 | 在线看片a| 成人国产精品免费观看 | 在线看国产日韩 | 国产精品爽爽爽 | 夜夜夜夜爽| 天天色天天操综合 | 国产黄色成人av | 婷婷丁香狠狠爱 | 久久在线免费视频 | 日日爽日日操 | 亚洲一区日韩精品 | 午夜视频在线观看欧美 | 午夜av免费 | 国产一区二区电影在线观看 | 久久久蜜桃 | 亚洲不卡在线 | 久久爱资源网 | 日本99久久| 婷婷激情小说网 | 天天操天天添天天吹 | 超碰在线成人 | 91九色蝌蚪国产 | 久草在线视频中文 | 久久色在线播放 | 美女黄网久久 | 国产精品精品国产婷婷这里av | 色偷偷网站视频 | 欧美日韩一区二区久久 | 国产生活一级片 | 97精品电影院 | 日本视频久久久 | 国产高清在线视频 | 国产精品久久久久久一区二区三区 | 97视频中文字幕 | 啪嗒啪嗒免费观看完整版 | 丁香婷婷深情五月亚洲 | 69视频在线| av免费观看网站 | 91精选在线观看 | 五月花丁香婷婷 | 久久久久观看 | 色五月成人 | 麻豆免费精品视频 | 国内久久精品 | 亚洲狠狠丁香婷婷综合久久久 | 久久小视频 | 亚洲视频免费视频 | 黄色天堂在线观看 | 日韩精品一区二区三区免费视频观看 | 91精品国产九九九久久久亚洲 | 天天操综合网站 | 丝袜av一区| 女人高潮特级毛片 | 久久99精品国产 | 成人精品国产 | 久久国产精品久久精品国产演员表 | 免费黄色a级毛片 | 97视频免费观看2区 亚洲视屏 | 美女久久久久 | 久草在线视频在线 | 日色在线视频 | 久久久天堂 | 人人射人人插 | 五月天色网站 | 日韩在线视频免费看 | 久久视频免费观看 | 人人超碰免费 | 国产精品成人免费一区久久羞羞 | 中国一级片在线播放 | 97精品国产97久久久久久春色 | 一区二区三区不卡在线 | 国产在线精品一区二区三区 | 97超碰总站| 97视频网址 | 成人在线免费看 | 狠狠操导航 | 91漂亮少妇露脸在线播放 | 91少妇精拍在线播放 | 99超碰在线观看 | 91黄色成人| 国语麻豆 | 黄色在线免费观看网站 | 91福利专区 | 久久99精品久久久久久 | 四虎在线观看视频 | 黄色1级大片 | 久久免费视频观看 | 亚洲播播 | 欧美精品中文 | 国产精品电影在线 | 国产色在线,com | 国产精品一区久久久久 | 日韩欧美在线免费观看 | 五月天综合网站 | 欧美视频xxx | 精品国产人成亚洲区 | 国产一级a毛片视频爆浆 | 亚洲黄色在线播放 | 911免费视频 | 日韩伦理片hd | 国产淫片免费看 | 国产高清精 | 99久高清在线观看视频99精品热在线观看视频 | 亚洲理论在线观看电影 | 亚洲 欧美 精品 | 久久国产亚洲精品 | 成人在线视频免费看 | 岛国av在线免费 | 三日本三级少妇三级99 | 福利视频网站 | 精品国产乱码久久久久久1区2匹 | 中文字幕国产精品一区二区 | 成人全视频免费观看在线看 | 国产一区二区不卡视频 | 五月天婷亚洲天综合网精品偷 | 欧美乱熟臀69xxxxxx | 丰满少妇久久久 | 久久呀| 久久精品中文字幕免费mv | 亚州av网站 | 在线观看深夜福利 | 免费视频久久久 | 91最新视频在线观看 | 国产三级精品在线 | 日本激情视频中文字幕 | 国产精品24小时在线观看 | 国产精品手机在线 | 成人av网站在线 | 超碰人人乐 | 天天操,夜夜操 | 中文字幕视频一区二区 | www夜夜操 | 欧美男同视频网站 | 国产精品 日韩精品 | 狠狠干成人综合网 | 精品在线观看一区二区三区 | 亚洲成人免费在线观看 | 国产精品毛片一区视频播不卡 | 日日夜夜噜噜噜 | 亚洲最新视频在线播放 | 免费黄色av | 亚洲最大成人免费网站 | 天天操天天射天天添 | 97电影手机版| 免费看的黄色录像 | 麻豆视频免费看 | 一级片免费视频 | 美女黄久久 | 丁香婷婷网 | avav片| 中文 一区二区 | 在线成人免费 | 免费午夜网站 | 国产va精品免费观看 | 久久区二区 | 97在线观 | 精品影院一区二区久久久 | 国产 欧美 日产久久 | 欧美日产在线观看 | 免费 在线 中文 日本 | 草免费视频 | 欧美不卡视频在线 | 成人av网站在线观看 | 国产做爰视频 | 久久国产精品一区二区三区 | 高清日韩一区二区 | 日日操操操 | 99久久久久久久久 | 青青射 | 黄色小说免费在线观看 | 国产精品视频免费观看 | 色吊丝在线永久观看最新版本 | 中文字幕在线播出 | 色综合久久久久久久久五月 | 国产一区二区精品久久 | 国产在线无| 激情综合色播五月 | 久久久噜噜噜久久久 | 免费特级黄色片 | 91成人在线视频 | 91成人在线观看高潮 | 国产精品毛片完整版 | 久久久激情视频 | 国产高清免费 | 免费看片成人 | 韩国精品一区二区三区六区色诱 | 天天操婷婷| 国产精品青青 | 中文字幕久久久精品 | 久久99国产综合精品免费 | 久久成人精品电影 | 国产精品久久久久久久毛片 | 在线观看国产91 | 在线亚洲观看 | 久久久久区 | 色综合久久久久久中文网 | 亚洲高清91 | 国产精品美女www爽爽爽视频 | 青青草国产免费 | 国产精品久久久久久久久久久久久久 | 久久免费看a级毛毛片 | 日本中文字幕一二区观 | 国产午夜一区 | 国产精品欧美久久 | 在线免费看片 | 五月天婷婷综合 | 日韩xxxxxxxxx | 日韩欧美一区二区三区在线观看 | 国产成人久久精品亚洲 | 97视频在线观看视频免费视频 | 国产成人精品一区二区三区网站观看 | 国产精品久久久久久久久免费 | 亚洲一级片在线观看 | 超碰人人干人人 | 午夜三级影院 | 一区二区高清在线 | 久国产在线播放 | 国产亚洲在线视频 | 欧美在线1区 | 天天干天天干天天操 | 97成人超碰 | 日日干夜夜干 | 99人久久精品视频最新地址 | 欧美综合色在线图区 | www国产亚洲精品久久麻豆 | 97超级碰碰 | 国产亲近乱来精品 | 久久精品国产免费观看 | 在线免费观看国产视频 | 天天透天天插 | 美女黄色网在线播放 | 国产精品第一页在线 | 91精品一区二区三区蜜桃 | 日韩精品一区二区三区水蜜桃 | 97色se| 干天天| 国产视频欧美视频 | 国产精品美女久久久免费 | 九月婷婷人人澡人人添人人爽 | 欧美成人黄色 | 97爱| 亚洲综合黄色 | 日韩动态视频 | 亚洲 欧美日韩 国产 中文 | 久久综合国产伦精品免费 | 香蕉精品视频在线观看 | 亚洲精品成人av在线 | 欧美一级专区免费大片 | www.天天操 | 97国产大学生情侣白嫩酒店 | 中文在线天堂资源 | 91视频在线免费下载 | 成人黄色在线看 | 国产精品男女视频 | 日日操天天爽 | 正在播放日韩 | 在线观看播放av | 精品久久免费看 | 18国产精品福利片久久婷 | 亚洲伦理中文字幕 | 亚洲色影爱久久精品 | 久久综合久久综合这里只有精品 | 91视频在线免费观看 | 91传媒在线播放 | 久久草草影视免费网 | 天天爱天天操天天干 | 偷拍久久久 | 精品国产电影一区 | 色综合色综合久久综合频道88 | 国产直播av| 日韩黄色在线电影 | 在线视频 国产 日韩 | 五月婷婷视频在线观看 | 日韩在线免费高清视频 | 精品视频在线免费 | 久久一区二区三区四区 | 99久久精品久久亚洲精品 | 国产精品自产拍在线观看蜜 |