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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[数据结构与算法] 单链表的简单demo

發布時間:2023/12/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [数据结构与算法] 单链表的简单demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Vc6之下編譯通過。。

?

1 /******************************************************* 2 * @: Project: 單鏈表數據結構演示 3 * @: File: link_list.h 4 * @: Function: 提供單鏈表操作的數據結構定義及方法聲明 5 * @: History: 2013-10-01 22:37:05 6 * @: Author: Alimy 7 *******************************************************/ 8 /******************************************************* 9 * @:頭文件包含 10 *******************************************************/ 11 12 #ifndef __LINK_LIST_H__ 13 #define __LINK_LIST_H__ 14 /******************************************* 15 * @: 數據結構定義&一些宏 16 ********************************************/ 17 #define ElemType signed short int // 此例子中的數據為有符號短整形,在VC6 中占據16bits 18 #define StatusType int //操作狀態為int類型 19 #define OK (StatusType)1 20 #define ERROR (StatusType)0 21 22 typedef struct LNode{ 23 ElemType m_data; // 數據域 24 struct LNode *p_next; // 指針域 25 } LNode, *pLinkList; 26 27 //typedef struct LHead{ //頭結點,其實和 LNode的內存結構相似, 28 // int ElemNumber; //數據域,可以存儲當前線性表的長度,也可以什么也不存儲 29 // struct LNode *p_FirstNode; //指針域指向線性表的第一個元素 30 //}LHead, *pLHead; 31 32 #define DATA_FIELD 0//定義是否讓頭結點的數據域存儲表長信息 1為存儲(頭結點模式),0為不存儲(非頭結點模式) 33 34 /******************************************* 35 * @: 外部調用函數聲明 36 ********************************************/ 37 extern StatusType CreateList_L(pLinkList *pL,int num);//構造num個結點的單鏈表 38 //extern StatusType _CreateList_L(pLinkList *pL,int num); 39 extern StatusType GetElem_L(pLinkList *pL,int idx_location, ElemType* pe); //獲取單鏈表的元素 40 extern StatusType InsertElem_L(pLinkList *pL,int idx_location,ElemType e);//在單鏈表中插入元素 41 extern StatusType DeleteElem_L(pLinkList *pL,int idx_location,ElemType* pe);//在單鏈表中刪除元素 42 extern void ClearList_L(pLinkList *pL); //整表刪除 43 extern int LocateElem_L(pLinkList *pL,ElemType e); //定位元素 44 extern int GetLength_L(pLinkList *pL); 45 46 extern void MergeList_L1(pLinkList *pLa,pLinkList *pLb,pLinkList *pLc);//將兩個有序鏈表并為一個有序鏈表 47 extern void MergeList_L2(pLinkList *pLa,pLinkList *pLb,pLinkList *pLc);//將兩個有序鏈表并為一個有序鏈表 48 49 50 extern void DisplayList_L(pLinkList *pL); //顯示當前所有單鏈表的長度 51 #endif // end of __LINK_LIST_H__ link_list.h

?

1 /******************************************************* 2 * @: Project: 單鏈表數據結構演示 3 * @: File: link_list.c 4 * @: Function: 提供單鏈表操作的基本函數和方法 5 * @: History: 2013-10-01 22:37:37 6 * @: Author: Alimy 7 *******************************************************/ 8 9 /******************************************************* 10 * @: 頭文件包含 11 *******************************************************/ 12 #include "link_list.h" 13 #include <stdio.h> 14 #include <conio.h> // int getch(void); 15 #include <stdlib.h> // int rand(void); malloc(); free(); 16 #include <time.h> // time_t time(time_t *); 17 18 /******************************************************* 19 * @: (外部&內部)變量聲明及定義 20 *******************************************************/ 21 22 /******************************************************* 23 * @: (外部&內部)函數聲明及定義 24 *******************************************************/ 25 StatusType CreateList_L(pLinkList *pL,int num);//構造num個結點的單鏈表 26 StatusType GetElem_L(pLinkList *pL,int idx_location, ElemType* pe); //獲取單鏈表的元素 27 StatusType InsertElem_L(pLinkList *pL,int idx_location,ElemType e);//在單鏈表中插入元素 28 StatusType DeleteElem_L(pLinkList *pL,int idx_location,ElemType* pe);//在單鏈表中刪除元素 29 int LocateElem_L(pLinkList *pL,ElemType e); //定位元素 30 int GetLength_L(pLinkList *pL);//獲得表長 31 void ClearList_L(pLinkList *pL); //整表刪除 32 33 void DisplayList_L(pLinkList *pL); //顯示當前所有單鏈表的長度 34 35 36 37 38 39 40 /******************************************************* 41 * @: 內部函數具體實現 42 *******************************************************/ 43 44 //ElemType s_data[] = {1,2,3,4,5,6,7,8,9,10,11}; 45 46 /* 47 *@:在堆中構造一個單鏈表,并逆序插入num個結點(頭插法) 48 *@:返回值 49 *@: 構造成功返回OK 50 *@: 構造失敗返回ERROR 51 **/ 52 StatusType CreateList_L(pLinkList *pL,int num){//構造num個結點的單鏈表 53 LNode* p_Work = NULL; //工作指針 54 int idx = 0; 55 if(*pL!=NULL){ 56 printf("當前單鏈表已被初始化,不需要執行Create操作 \n"); 57 return ERROR; 58 } 59 60 *pL = (pLinkList)malloc(sizeof(LNode)); 61 if(*pL == NULL){ 62 printf("在堆中申請頭結點失敗 \n"); 63 return ERROR; 64 } 65 (*pL)->m_data = 0; // 數據域可以存儲當前單鏈表的長度 66 (*pL)->p_next = NULL; 67 68 srand(time(0)); 69 for(idx=0;idx<num;idx++){ 70 p_Work = (pLinkList)malloc(sizeof(LNode)); //在堆中申請新的結點 71 if(p_Work==NULL){ 72 printf("在堆中申請結點出現異常,構造單鏈表失敗 \n"); 73 return ERROR; 74 } 75 76 //p_Work->m_data = 10*s_data[idx%10];//(rand()%(10)); //均為10以內的整數 77 p_Work->m_data = (rand()%(100))+1; //暈死,每次生產的隨機數怎么都一樣 78 p_Work->p_next = (*pL)->p_next; 79 (*pL)->p_next = p_Work; //逆序插入,第一個產生為表尾 80 } 81 82 (*pL)->m_data = num; 83 84 // printf("構造單鏈表成功,單鏈表的當前長度為 【%d】 \n",(*pL)->m_data); 85 // printf("單鏈表的元素值依次是 \n"); 86 // p_Work = (*pL); //指向頭結點 87 // idx = 0; 88 // while(p_Work->p_next){// p_ Work->p_next != NULL 89 // idx++; 90 // p_Work = p_Work->p_next; 91 // printf("單鏈表的第【%d】個元素的值為【%d】\n",idx,p_Work->m_data); 92 93 // } 94 printf("構造含【%d】個元素的單鏈表成功,按任意鍵去到主菜單\n",(*pL)->m_data); 95 getch(); 96 return OK; 97 } 98 //StatusType _CreateList_L(pLinkList *pL,int num){//構造num個結點的單鏈表(尾插法) 99 // LNode* p_Work = NULL; 100 // LNode* p_NewNode = NULL; //指向新申請結點 101 // LNode* p_LastNode = NULL; //指向當前單鏈表的最后一個結點 102 // int idx = 0; 103 // if(*pL!=NULL){ 104 // printf("當前單鏈表已被初始化,不需要執行Create操作 \n"); 105 // return ERROR; 106 // } 107 // 108 // *pL = (pLinkList)malloc(sizeof(LNode));//(建立頭結點) 109 // if(*pL == NULL){ 110 // if(*pL == NULL){ 111 // printf("在堆中申請頭結點失敗 \n"); 112 // return ERROR; 113 // } 114 // 115 // } 116 // (*pL)->m_data = 0; // 數據域可以存儲當前單鏈表的長度 117 // (*pL)->p_next = NULL; 118 // p_LastNode = (*pL); 119 // srand(time(0)); 120 // for(idx=0;idx<num;idx++){ 121 // p_NewNode = (LNode*)malloc(sizeof(LNode)); 122 // if(p_NewNode == NULL){ 123 // printf("在堆中申請新結點失敗 \n"); 124 // return ERROR; 125 // } 126 // p_NewNode->m_data = (rand()%(10)); 127 // p_NewNode->p_next = NULL; 128 // p_LastNode->p_next = p_NewNode; 129 // p_LastNode = p_NewNode; 130 // } 131 // 132 // (*pL)->m_data = num; 133 // 134 // printf("構造單鏈表成功,單鏈表的當前長度為 【%d】 \n",(*pL)->m_data); 135 // printf("單鏈表的元素值依次是 \n"); 136 // 137 // p_Work = (*pL); //指向頭結點 138 // idx = 0; 139 // while(p_Work->p_next){// p_ Work->p_next != NULL 140 // idx++; 141 // p_Work = p_Work->p_next; 142 // printf("單鏈表的第【%d】個元素的值為【%d】\n",idx,p_Work->m_data); 143 // } 144 // printf("構造含【%d】個元素的單鏈表成功,按任意鍵去到主菜單",(*pL)->m_data); 145 // getch(); 146 // return OK; 147 //} 148 149 150 151 /* 152 *@:定位pL指向的單鏈表的第idx_location 個元素,并將該元素的值賦值給pe指向的內存 153 *@:返回值 154 *@: 定位數據成功返回OK 155 *@: 定位數據失敗返回ERROR 156 **/ 157 StatusType GetElem_L(pLinkList *pL,int idx_location, ElemType* pe){ //獲取單鏈表的元素 158 int idx = 0; 159 LNode * p_Work = NULL; // 工作指針 160 161 #if DATA_FIELD == 0 162 p_Work = (*pL); //工作指針指向頭指針 163 idx = 0; 164 while(p_Work && idx<idx_location){ // 移動工作指針&計數判斷是否有 165 p_Work = p_Work->p_next; 166 idx++; 167 // p_Work 指向第idx個結點 168 } 169 170 if((!p_Work)||(idx>idx_location)){ 171 // printf("索引數據有(非頭結點模式)\n"); 172 return ERROR; 173 } 174 175 *pe = p_Work->m_data; 176 return OK; 177 #else 178 //若頭結點的數據域存儲了單鏈表的表長信息 179 if((idx_location>(*pL)->m_data)||(idx_location<1)){ //索引有誤 180 // printf("索引數據有誤(頭結點模式) \n"); 181 return ERROR; 182 } 183 p_Work = (*pL); 184 idx = 0; //工作指針指向頭結點,計數清零 185 for(;idx<idx_location;){ 186 p_Work = p_Work->p_next; 187 idx++; 188 } 189 //此時p_Work指向第idx_location個結點 190 *pe = p_Work->m_data; 191 return OK; 192 #endif 193 194 } 195 196 197 198 /* 199 *@:在pL指向的單鏈表的第idx_location 個位置插入值為e的元素 200 *@:返回值 201 *@: 插入元素成功返回OK 202 *@: 插入元素失敗返回ERROR 203 *@: 時間復雜度:O(n) 但是插入一個和插入N個區別不多,單鏈表適合(比較順序表)插入操作較頻繁的操作 204 205 **/ 206 StatusType InsertElem_L(pLinkList *pL,int idx_location,ElemType e){//在單鏈表中插入元素 207 208 int idx = 0; 209 LNode* p_Work = NULL; 210 LNode* pNewNode = NULL; 211 212 #if DATA_FIELD == 0 213 // to do 2013-10-06 00:10:46 214 p_Work = (*pL); //工作指針指向頭結點 215 idx = 0; 216 217 while((p_Work)&&(idx<idx_location-1)){ 218 idx++; 219 p_Work = p_Work->p_next; 220 } 221 //正常情況下,p_Work應該指向第【idx_location - 1】個元素 222 if((!p_Work)||(idx>idx_location-1)){ 223 printf("要插入元素的索引有誤,請檢查后重新輸入 \n"); 224 return ERROR; 225 } 226 else{ 227 pNewNode = (LNode *)malloc(sizeof(LNode)); 228 if(!pNewNode){ 229 printf("在插入元素時,申請堆空間失敗,插入操作元素失敗 \n"); 230 return ERROR; 231 } 232 else{ 233 pNewNode->m_data = e; 234 pNewNode->p_next = p_Work->p_next; 235 p_Work->p_next = pNewNode; 236 return OK; 237 } 238 239 240 } 241 #else 242 //頭結點存儲了單鏈表的長度 243 if((idx_location<1)||(idx_location>(*pL)->m_data+1)){ // 元素索引邏輯有誤 244 printf("要插入元素的索引有誤,請檢查后重新輸入 \n"); 245 return ERROR; 246 } 247 else{ 248 p_Work = (*pL); 249 idx = 0; //工作指針指向頭結點,計數清零 250 for(;idx<idx_location-1;){ 251 p_Work = p_Work->p_next; 252 idx++; 253 } 254 // p_Work指向第【idx_location-1】個結點 255 pNewNode = (LNode *)malloc(sizeof(LNode)); 256 if(!pNewNode){ 257 printf("在插入元素時,申請堆空間失敗,插入操作元素失敗 \n"); 258 return ERROR; 259 } 260 else{ 261 pNewNode->m_data = e; 262 pNewNode->p_next = p_Work->p_next; 263 p_Work->p_next = pNewNode; // s->next = p->next; p->next = s; 264 (*pL)->m_data++; //計數器自加 265 printf("插入元素成功\n"); 266 return OK; 267 } 268 } 269 #endif 270 } 271 272 273 /* 274 *@:在pL指向的單鏈表中尋找第一個值為e的元素,將其索引返回 275 *@: 返回值 276 * 找到值為e的元素--->返回非0 索引值 277 * 沒有找到----> 返回0 278 */ 279 int LocateElem_L(pLinkList *pL,ElemType e){ //定位元素 280 int idx = 0; 281 LNode * p_Work = NULL; 282 if(*pL==NULL){ 283 printf("當前單鏈表未被初始化,無法執行定位操作 \n"); 284 return 0; 285 } 286 287 p_Work = (*pL); 288 idx = 0; //計數清零,工作指針指向頭結點 289 //_Loops: 290 // if(p_Work->p_next!=NULL) 291 // { 292 // p_Work = p_Work->next; 293 // idx++; 294 // if(p_Work->m_data == e) 295 // return idx; 296 // goto _Loops; 297 // } 298 299 while(p_Work->p_next!=NULL){ 300 p_Work = p_Work->p_next; 301 idx++; 302 if(p_Work->m_data == e){ 303 printf("找到單鏈表的第【%d】個元素的值為【%d】",idx,p_Work->m_data); 304 return idx; 305 } 306 } 307 printf("沒有定位到元素"); 308 return 0; // 上述沒有定位到 309 310 311 } 312 313 /* 314 *@:刪除pL指向的單鏈表的第idx_location 個位置的元素,并將被刪除結點的數據域賦值給pe指向的內存 315 *@:返回值 316 *@: 刪除元素成功返回OK 317 *@: 刪除元素失敗返回ERROR 318 *@: 時間復雜度:O(n) 但是刪除一個和刪除N個區別不多,單鏈表適合(比較順序表)刪除操作較頻繁的操作 319 **/ 320 StatusType DeleteElem_L(pLinkList *pL,int idx_location,ElemType* pe){//在單鏈表中刪除元素 321 int idx = 0; 322 LNode * p_Work = NULL; 323 LNode * p_Temp = NULL; 324 325 #if DATA_FIELD == 0 326 idx = 0; 327 p_Work = (*pL); //工作指針指向頭結點 328 while((p_Work)&&(idx<idx_location-1)){ 329 idx++; 330 p_Work = p_Work->p_next; 331 } 332 //正常情況下,p_Work應該指向第【idx_location - 1】個元素 333 if((!p_Work)||(idx>idx_location-1)){ 334 printf("要刪除位置的索引有誤,請重新輸入 \n"); 335 return ERROR; 336 } 337 else{ 338 p_Temp = p_Work->p_next; //指向要刪除的結點 339 p_Work->p_next = p_Temp->p_next;//p_Work->p_next = p_Work->p_next->p_next; 340 *pe = p_Temp->m_data; 341 free(p_Temp); 342 return OK; 343 } 344 #else 345 if((idx_location<1)||(idx_location>(*pL)->m_data)){ // 346 printf("要刪除元素位置索引有誤,請檢查輸入 \n"); 347 return ERROR; 348 } 349 else{ 350 p_Work = (*pL); 351 idx = 0; //工作指針指向頭結點 352 for(;idx<idx_location-1;){ 353 p_Work = p_Work->p_next; 354 idx++; 355 } 356 //p_Work指向第【idx_location - 1 】個結點 357 p_Temp = p_Work->p_next; 358 p_Work->p_next = p_Temp->p_next;//p_Work->p_next = p_Work->p_next->p_next; 359 *pe = p_Temp->m_data; 360 free(p_Temp); 361 (*pL)->m_data--; 362 return OK; 363 } 364 365 #endif 366 } 367 368 /* 369 * @:獲取pL指向的單鏈表中的元素個數 370 * @:返回值 371 * 得到長度--->返回非0長度值 372 * 得不到長度---->返回0 373 */ 374 int GetLength_L(pLinkList *pL){//獲得表長 375 376 int idx = 0; 377 LNode * p_Work = NULL; 378 if(*pL==NULL){ 379 printf("當前單鏈表未被初始化,無法獲取表長\n"); 380 return 0; 381 } 382 #if DATA_FIELD == 0 383 p_Work = (*pL); 384 idx = 0; //計數清零,工作指針指向頭結點 385 while(p_Work->p_next!=NULL){ 386 idx++; 387 p_Work = p_Work->p_next; 388 } 389 printf("當前單鏈表共有【%d】個元素\n",idx); 390 return idx; 391 392 #else 393 idx = (*pL)->m_data; 394 printf("當前單鏈表共有【%d】個元素\n",idx); 395 396 return idx; 397 398 399 #endif 400 401 } 402 /* 403 *@:刪除pL指向的單鏈表的所有結點 404 */ 405 406 void ClearList_L(pLinkList *pL){ //整表刪除 407 LNode* p_Work1 = NULL; 408 LNode* p_Work2 = NULL; //工作指針 409 410 if(*pL == NULL){ 411 printf("當前單鏈表未創建,無法執行整表刪除操作 \n"); 412 return ; 413 } 414 else if((*pL)->p_next == NULL){ 415 printf("當前單鏈表為空表,不需要執行整表刪除操作 \n"); 416 return; 417 } 418 else{ 419 p_Work1 = (*pL)->p_next; // 指向第一個結點(如果有的話) 420 while(p_Work1!=NULL){ 421 p_Work2 = p_Work1; 422 p_Work1 = p_Work2->p_next;//指向下一個 423 free(p_Work2); 424 } 425 426 // (*pL)->p_next = NULL; // 頭結點指向NULL 427 (*pL)->m_data = 0; 428 return ; 429 } 430 } 431 432 /* 433 *@: 輸出顯示pL指向的單鏈表所有的元素 434 */ 435 void DisplayList_L(pLinkList *pL){ //顯示當前所有單鏈表的長度 436 437 int idx = 0; 438 LNode* p_Work = NULL; 439 440 if(*pL==NULL){ 441 printf("單鏈表還未構建,輸不出東東 \n"); 442 return ; 443 } 444 445 #if DATA_FIELD == 0 446 idx = 0; 447 p_Work = (*pL); // 工作指針指向頭結點,計數清零 448 if(p_Work->p_next==NULL){ 449 printf("當前單鏈表為空表,沒什么東東好顯示的 \n"); 450 return ; 451 } 452 else{ 453 while(p_Work->p_next){ //(p_Work->p_next!=NULL) 454 idx++; 455 p_Work = p_Work->p_next; 456 printf("單鏈表第【%d】個元素的值為【%d】\n",idx,p_Work->m_data); 457 } 458 return ; 459 } 460 #else 461 if((*pL)->m_data == 0){ 462 printf("當前單鏈表的表長為0,沒有數據元素,沒有什么好打印的 \n"); 463 return ; 464 } 465 idx = 0; 466 p_Work = (*pL); // 工作指針指向頭結點,計數清零 467 printf("單鏈表數據如下:\n"); 468 for(;idx<(*pL)->m_data;){ // idx < currentLength (currentLength == (*pL)->m_data or currentLength == GetLength_L ) 469 idx++; 470 p_Work = p_Work->p_next; 471 printf("單鏈表第【%d】個元素的值為【%d】\n",idx,p_Work->m_data); 472 } 473 return ; 474 #endif 475 476 } 477 478 479 480 481 //演示程序中沒有用到的程序 482 483 void MergeList_L1(pLinkList *pLa,pLinkList *pLb,pLinkList *pLc);//歸并兩個單鏈表 484 /* 485 *@:歸并,已知pLa和pLb指向的單鏈表的元素都按非遞減排列 486 * 將La 和Lb中的元素歸并到pLc指向的單鏈表中 487 */ 488 void MergeList_L1(pLinkList *pLa,pLinkList *pLb,pLinkList *pLc){ // 按順序表的方法新建結點歸并到pLc,形成一個新的表,對原來的那兩個單鏈表沒有損傷 489 LNode * p_WorkLa = NULL; 490 LNode * p_WorkLb = NULL; 491 int Lc_len = 0; 492 *pLc = (LNode *)malloc(sizeof(LNode)); //*pLc進來是是未被初始化的,即(*pLc) == NULL 493 (*pLc)->m_data = 0; 494 (*pLc)->p_next = NULL; // 將pLc指向空表 495 496 497 p_WorkLa = (*pLa)->p_next; 498 p_WorkLb = (*pLb)->p_next; // 初始化時都指向第一個結點(如果有第一個的話) 499 500 while((p_WorkLa!=NULL)&&(p_WorkLb!=NULL)){ 501 Lc_len++; //一定有可以插入的元素 502 if(p_WorkLa->m_data>=p_WorkLb->m_data){ 503 InsertElem_L(pLc,Lc_len,p_WorkLb->m_data); 504 p_WorkLb = p_WorkLb->p_next; 505 } 506 else{ 507 InsertElem_L(pLc,Lc_len,p_WorkLa->m_data); 508 p_WorkLa = p_WorkLa->p_next; 509 } 510 } 511 512 while(p_WorkLa!=NULL){ 513 Lc_len++; 514 InsertElem_L(pLc,Lc_len,p_WorkLa->m_data); 515 p_WorkLa = p_WorkLa->p_next; 516 } 517 518 while(p_WorkLb!=NULL){ 519 Lc_len++; 520 InsertElem_L(pLc,Lc_len,p_WorkLb->m_data); 521 p_WorkLb = p_WorkLb->p_next; 522 } 523 } 524 525 526 void MergeList_L2(pLinkList *pLa,pLinkList *pLb,pLinkList *pLc){//不新建結點,就用鏈表把la和lb中的元素用指針連接起來也成為lc的結點 527 LNode* p_la = NULL; 528 LNode* p_lb = NULL; 529 LNode* p_lc = NULL; 530 531 p_la = (*pLa)->p_next; 532 p_lb = (*pLc)->p_next; // 都指向第一個結點 533 534 pLc = p_lc = p_la; //用La的頭結點作為Lc的頭結點 535 536 while((p_la!=NULL)&&(p_lb!=NULL)){ 537 if(p_la->m_data <= p_lb->m_data){ 538 p_lc->p_next = p_la; 539 p_lc = p_la; // 工作指針移動 540 p_la = p_la->p_next; 541 } 542 else{ 543 pLc->p_next = p_lb; 544 p_lc = p_lb; 545 p_lb = p_lb->p_next; 546 } 547 } 548 549 if(p_la != NULL){ 550 p_lc->p_next = p_la; 551 } 552 553 if(p_lb != NULL){ 554 p_lc->p_next = p_lb; 555 } 556 557 free(*(pLb));//釋放Lb結點 558 (*pLb)->p_next = NULL;//Lb被直接置為空表了! 559 560 } link_list.c

?

?

1 /******************************************************* 2 * @: Project: 單鏈表數據結構演示 3 * @: File: main.c 4 * @: Function: 單鏈表demo主程序 5 * @: History: 2013-10-01 22:36:03 6 * @: Author: Alimy 7 *******************************************************/ 8 9 /******************************************************* 10 * @: 頭文件包含 11 *******************************************************/ 12 #include "link_list.h" 13 #include <stdio.h> 14 #include <conio.h> 15 #include <stdlib.h> 16 17 18 /******************************************************* 19 * @:(外部&內部)變量聲明及定義 20 *******************************************************/ 21 22 /******************************************************* 23 * @: (外部&內部)函數聲明及定義 24 *******************************************************/ 25 void printmenu(void); 26 27 28 /******************************************************* 29 * @: 主函數 30 *******************************************************/ 31 int main(){ 32 pLinkList LinkList_Display = NULL; 33 unsigned char keyValue = 0; 34 int idx = 0; 35 ElemType e = 0; 36 if(OK!=CreateList_L(&LinkList_Display,5)) 37 goto _end; 38 39 while(1){ 40 system("cls"); 41 printmenu(); 42 fflush(stdin); 43 scanf("%c",&keyValue); 44 fflush(stdin); 45 switch(keyValue){ 46 case 'a': 47 printf("請輸入你要插入的位置索引及要插入的數據\n"); 48 scanf("%d%d",&idx,&e); 49 printf("你要插入數據的位置是 【%d】,要插入的數據是【%d】\n",idx,e); 50 InsertElem_L(&LinkList_Display,idx,e); 51 printf("按任意鍵返回主菜單\n"); 52 getch(); 53 break; 54 55 case 'b': 56 printf("請輸入你要刪除單鏈表中的元素的索引\n"); 57 scanf("%d",&idx); 58 printf("你要刪除數據的位置是 【%d】\n",idx); 59 if(OK==DeleteElem_L(&LinkList_Display,idx,&e)){ 60 printf("刪除元素成功,被刪除的元素值為 %d \n",e); 61 } 62 printf("按任意鍵返回主菜單\n"); 63 getch(); 64 break; 65 case 'c': 66 printf("請輸入你要得到單鏈表中的元素的索引\n"); 67 scanf("%d",&idx); 68 if(OK!=GetElem_L(&LinkList_Display,idx,&e)){ 69 printf("獲取元素失敗,請檢查相關輸入是否符合操作條件\n"); 70 } 71 else{ 72 printf("獲取到的元素是 %d \n",e); 73 } 74 printf("按任意鍵返回主菜單\n"); 75 getch(); 76 break; 77 case 'd': 78 printf("請輸入你要定位單鏈表中的元素值\n"); 79 scanf("%d",&e); 80 LocateElem_L(&LinkList_Display,e); 81 printf("按任意鍵返回主菜單\n"); 82 getch(); 83 break; 84 case 'e': 85 idx = GetLength_L(&LinkList_Display); 86 if(LinkList_Display->p_next!=NULL){ 87 printf("當前表長為【%d】 \n", idx); 88 } 89 printf("按任意鍵返回主菜單\n"); 90 getch(); 91 break; 92 case 'f': 93 ClearList_L(&LinkList_Display); 94 printf("清除單鏈表完成,按任意鍵返回主菜單\n"); 95 getch(); 96 break; 97 case 'g': 98 DisplayList_L(&LinkList_Display); 99 printf("按任意鍵返回主菜單\n"); 100 getch(); 101 break; 102 case 'h': 103 goto _end; 104 break; 105 default: 106 printf("你的輸入環節有誤,清重新輸入 \n"); 107 printf("按任意鍵返回主菜單\n"); 108 getch(); 109 break; 110 } 111 } 112 113 114 115 _end: 116 ClearList_L(&LinkList_Display); // 釋放堆空間 117 if(LinkList_Display!=NULL) 118 free(LinkList_Display); //釋放頭結點 119 /* 120 121 錯誤代碼 : 122 while(LinkList_Display!=NULL) 123 free(LinkList_Display); 124 125 //剛剛才知道 free(p)之后p還是原來的數,不會變成NULL 126 研究了一下 p自身雖然是指針,但不能通過指針的值并不能改變自身的值,所以說傳地址能改變原元素的值是有條件的 127 再者,傳值就一定改變不了原元素的 值么 128 129 //另外一個測試代碼,VC6下測試結果符合預期,其他編譯器未經測試 130 // test -- start 131 #include <stdio.h> 132 void changedata(long int pointer){ 133 *((int *)pointer) = 100; 134 return ; 135 136 } 137 int main(void){ 138 int temp = 1000; 139 long int p = (long int)(&temp); // 在VC6中long int為四個字長,等于指針長度 140 printf("temp = %d \n",temp); 141 changedata(p); 142 printf("temp = %d \n",temp); 143 return 1; 144 } 145 // test--end 146 傳值還是傳址不能被形式表象所迷惑。 147 */ 148 getch(); 149 return 0; 150 151 } 152 153 154 /* 155 *@: 打印演示主菜單 156 *@:返回值(無) 157 */ 158 void printmenu(void){ 159 printf(" 【主菜單】: 請輸入數據相應對應的操作\n"); 160 printf("【a】: 在單鏈表中插入元素\n"); 161 printf("【b】: 在單鏈表中刪除元素\n"); 162 printf("【c】: 在單鏈表中得到元素\n"); 163 printf("【d】: 在單鏈表中定位元素\n"); 164 printf("【e】: 獲取當前單鏈表的表長\n"); 165 printf("【f】: 清除單鏈表,整表刪除\n"); 166 printf("【g】: 打印當前單鏈表的所有數據\n"); 167 printf("【h】: 退出當前程序\n"); 168 printf(" 您需要執行的操作項是: "); 169 } 170 171 172 173 /* 174 175 單鏈表結構與順序表存儲結構的比較 176 1:存儲分配方式 177 順序表:申請連續塊空間 178 單鏈表:鏈式申請,存儲單元任意 179 2:時間性能 180 查找: 181 順序表:O(1) 182 單鏈表:O(n) 183 刪除&插入: 184 順序表:O(n) 185 單鏈表:第一次為O(n),后續為O(1) 186 3:空間性能 187 順序表: 188 需要預分配,分配大了造成浪費;分配小了,容易造成溢出 189 單鏈表: 190 只要 有,隨時可以用 191 192 193 若線性表需要頻繁的查找,很少進行插入&刪除操作,宜采用順序存儲結構 194 反之可以采用鏈式存儲結構 195 196 197 例子: 198 游戲開發中,對于用戶注冊注冊的個人信息,只讀取居多,宜采用順序存儲結構 199 游戲中的武器或者裝備列表,增加刪除操作更多,宜采用鏈式存儲結構 200 201 202 當線性表中的元素個數變化大或者對應用不了解的情況下,最好采用單鏈表結構,不必考慮存儲空間的大小問題。 203 若評估知道規模大致長度,可以用順序表。。 204 205 總之:綜合各種條件考慮! 206 */ main.c

?

(老實說,我對單鏈表的頭結點有點好奇,

我的想法是為頭結點單獨管理,然后讓頭結點的數據域來管理單鏈表的長度。。。這樣在插入&刪除等操作中,直接就可以用頭結點的數據域來判斷是否能完成插入&刪除等操作了。。

1 typedef struct LHead{ //頭結點,其實和 LNode的內存結構相似, 2 int LinkListLength; //數據域,可以存儲當前線性表的長度,也可以什么也不存儲 3 struct LNode *p_FirstNode; //指針域指向線性表的第一個元素 4 }LHead, *pLHead;

?

額。靜態鏈表&(循環鏈表&雙向鏈表)就直接跳過了,不寫demo了。。

靜態鏈表不是在擁有指針機制的其他高級語言使用鏈表的機制。

?

循環鏈表&雙向鏈表和單鏈表的實現類似。

轉載于:https://www.cnblogs.com/alimy/p/3361977.html

總結

以上是生活随笔為你收集整理的[数据结构与算法] 单链表的简单demo的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久试看 | 欧美黄色成人 | 国产最新在线观看 | 日本久久电影网 | se婷婷| 欧美另类交人妖 | 国产免费观看久久黄 | 国产特级毛片aaaaaa毛片 | 尤物一区二区三区 | 国产精品3 | 亚洲综合国产精品 | 日韩中文字幕在线 | 在线а√天堂中文官网 | 99这里只有精品视频 | 在线观看免费高清视频大全追剧 | 日韩激情精品 | 在线观看日本高清mv视频 | 久久免费视频观看 | www色com| 四虎永久视频 | 久久看片 | 国产男女无遮挡猛进猛出在线观看 | 在线视频成人 | 免费视频 三区 | 狠狠搞,com| 精品一区二区视频 | 开心综合网 | 国产一级高清 | 午夜婷婷在线观看 | 免费av成人在线 | 片黄色毛片黄色毛片 | 一级片免费视频 | 国产亚洲成人网 | 在线观av| 一级黄毛片 | wwwwww国产 | 国产一区二区精品91 | 精品国产视频一区 | 久久免费高清 | 一区二区欧美在线观看 | 欧美激情视频一区二区三区 | 色网站在线看 | 亚洲精品www久久久久久 | 亚洲va男人天堂 | 中文字幕乱在线伦视频中文字幕乱码在线 | 96久久欧美麻豆网站 | 久久1电影院 | 91一区二区三区在线观看 | 婷婷六月激情 | 日韩免费一区二区 | 精品一区久久 | 韩国一区二区在线观看 | 婷婷综合成人 | 精品一区在线看 | 国产视频1| 国产片网站 | 色婷婷成人网 | 毛片99 | 涩涩网站在线观看 | 欧美在线久久 | 亚洲日日射 | 中文在线www | 日韩久久影院 | 国产色在线,com | 久久久久久毛片 | 欧美在线aaa | 超碰在线公开免费 | 久久久久97国产 | 波多野结衣一区 | 国产精品99久久久久久宅男 | 精品96久久久久久中文字幕无 | 日日操操操 | 国产精品久久嫩一区二区免费 | 日韩av午夜| 九九热只有这里有精品 | 色综合久久久久综合99 | 日日麻批40分钟视频免费观看 | 国产在线1区| av韩国在线 | 麻豆精品视频 | avcom在线| 免费观看91视频 | 免费黄a | 日韩网站在线 | 国产在线高清 | 在线观看视频99 | 久久影院中文字幕 | 成人片在线播放 | 久草在线久草在线2 | 亚色视频在线观看 | 在线观看视频国产 | 涩涩色亚洲一区 | 丝袜美腿亚洲综合 | 国内精品久久久久久久影视麻豆 | 一区二区 不卡 | 久久婷婷国产色一区二区三区 | 日本久久久精品视频 | 一级黄色片在线免费观看 | 操操综合 | 日韩中文字幕免费电影 | 色综合天天狠天天透天天伊人 | 久久夜夜夜 | 中文字幕av一区二区三区四区 | 国产精品黄色影片导航在线观看 | 一级黄色在线免费观看 | av超碰免费在线 | 国产美女搞久久 | 日韩激情在线 | 天天干干 | 国产免费专区 | 日韩av电影网站在线观看 | 亚洲精品久久久久久久不卡四虎 | 亚洲日韩中文字幕 | 狠狠操精品| 特级免费毛片 | 久久伊人免费视频 | 伊人开心激情 | 99热在线看 | 免费大片黄在线 | www.五月天婷婷.com | 欧美另类sm图片 | 麻豆视频免费在线 | 91精品日韩 | 在线视频你懂得 | 能在线看的av| 免费av在线播放 | 亚洲爱爱视频 | 婷婷丁香五| 日本一区二区高清不卡 | 久草在线久 | 日日干天天 | 久久久久久免费 | 国产精品久久久视频 | 国产精品一区二区你懂的 | 国产精品午夜在线观看 | 亚洲日本精品 | 久久伦理电影网 | 日日干夜夜操视频 | 一本色道久久综合亚洲二区三区 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲视屏在线播放 | 免费看国产a | www.天天操.com | 亚洲国产精品女人久久久 | 久久综合99| 日日操日日干 | 国产精品久久久久婷婷二区次 | 九热精品 | 高清不卡毛片 | 国产成人一区二区精品非洲 | 日韩高清国产精品 | 中文字幕免费高 | 婷婷丁香激情综合 | 亚洲 欧美 91| 久久6精品 | 最近中文字幕完整高清 | 午夜电影一区 | 狠狠干夜夜操 | 99re国产视频 | 免费看成人av | 国产精品自拍av | 在线视频精品播放 | 亚洲男女精品 | 69国产盗摄一区二区三区五区 | 超碰在线97国产 | 在线观看成人毛片 | 97视频在线免费 | 免费视频一二三区 | 在线午夜av | 最近字幕在线观看第一季 | 欧美成人xxxx| 亚洲乱码精品 | 久久99这里只有精品 | 这里只有精品视频在线 | 亚洲美女精品区人人人人 | 欧美小视频在线 | 国产又粗又猛又黄又爽的视频 | 九九热视频在线 | 日韩黄色软件 | 中文字幕 国产 一区 | 国产精品手机播放 | 黄色小说视频在线 | av不卡在线看 | 欧洲亚洲精品 | 奇人奇案qvod | 欧美日韩性| 午夜精品久久久久久久99水蜜桃 | 久久伊人综合 | 久久免费电影网 | 久久综合色婷婷 | 色综合婷婷久久 | 99欧美视频 | 中文字幕在线日本 | 国产一级二级在线 | 天天爱天天操天天爽 | 亚洲在线精品 | 成人性生交大片免费观看网站 | 天天射天天操天天色 | 天天射一射 | 欧美日韩裸体免费视频 | 久草精品在线播放 | 中文字幕在线日亚洲9 | 亚洲黑丝少妇 | 一区二区三区四区五区在线视频 | 中文字幕成人网 | 色资源网在线观看 | 最新在线你懂的 | 色综合久久久久久久 | av中文字幕av | 久久成年人网站 | 亚洲精品在线免费播放 | 99精品网站 | 日韩激情在线视频 | 中文字幕在线免费 | 国产精品观看 | 91视频免费看 | 亚洲国产成人精品在线 | 国产精品国产三级国产aⅴ无密码 | 粉嫩av一区二区三区四区在线观看 | 久久久久麻豆v国产 | 天天综合操 | 国产精品成久久久久 | 7777精品伊人久久久大香线蕉 | 亚洲免费视频观看 | 一区二区欧美在线观看 | 成人avav| av大全在线播放 | 免费a级大片| 在线一级片 | 五月天激情综合 | av+在线播放在线播放 | 日韩在线观看一区二区 | 国产日韩欧美自拍 | 一区二区三区不卡在线 | 成人小视频在线观看免费 | 草久久久久久久 | 国产一区二区精品 | 成人av教育 | 人人干免费 | 国产精品婷婷 | 999久久国产精品免费观看网站 | 久草在线高清视频 | 日本激情视频中文字幕 | 丁香花在线观看视频在线 | 亚洲精品乱码久久久久久蜜桃91 | 91av手机在线 | 亚洲精品黄色在线观看 | 在线久热| 国产精品18久久久 | 日韩av在线免费播放 | 91在线观看黄 | 亚洲精品久久久蜜臀下载官网 | 成人一区在线观看 | 日本久久中文 | 久精品视频 | 97av在线 | 在线影视 一区 二区 三区 | 免费看的黄色小视频 | 成人国产精品av | 久久精品精品电影网 | 中文字幕韩在线第一页 | 久久污视频| 国产中文视频 | 免费看三片 | 深爱激情久久 | 波多野结衣视频一区二区三区 | 亚洲成人影音 | 精品一区二区视频 | 欧美日韩国产免费视频 | 久久免费在线观看视频 | 在线播放国产一区二区三区 | 久久九九久久 | 中文字幕二区在线观看 | 中文字幕亚洲精品在线观看 | 国产精品男女视频 | 亚洲最新av网址 | aaa黄色毛片 | 日韩午夜小视频 | 中文av资源站| 日韩中文字幕免费 | 久久久久久久久久网站 | 五月婷婷丁香综合 | 区一区二区三区中文字幕 | 国产精品一区二区精品视频免费看 | 99中文在线| 69av免费视频 | 一区二区三区免费在线观看视频 | 亚洲一区二区三区四区在线视频 | 国产特级毛片aaaaaa毛片 | 精品国产伦一区二区三区免费 | 最新一区二区三区 | 波多野结衣在线观看一区 | 午夜av在线免费 | 亚洲最新av网址 | 天堂在线v| 手机在线看a | 操操操影院| 亚洲成人免费在线 | 日韩精品播放 | 在线观看亚洲精品 | 九九久久在线看 | 免费看麻豆 | 国产在线探花 | 国产精品一区二区三区久久 | 夜添久久精品亚洲国产精品 | 99热日本 | www.99在线观看 | 亚洲永久av | 亚洲男模gay裸体gay | 成人三级网站在线观看 | 日韩精品一区二区三区第95 | 久久99精品久久只有精品 | 国产手机在线视频 | 国产伦精品一区二区三区… | 涩涩资源网 | 在线看不卡av| 久久超碰网 | 免费91麻豆精品国产自产在线观看 | 日本精品一区二区在线观看 | 天天色综合1| 国产女教师精品久久av | 午夜精品999 | 国产又粗又猛又爽又黄的视频免费 | 色网站在线看 | 亚洲天堂网站视频 | 国产美女免费观看 | 亚洲理论电影网 | 嫩草av影院| 91私密保健 | 国产一在线精品一区在线观看 | 国产高清中文字幕 | 成人免费视频视频在线观看 免费 | 久久久久久久久久久久亚洲 | 国产99久久久久久免费看 | 91精品一区二区三区久久久久久 | www.狠狠操.com | 天天综合导航 | 国产视频久| 免费看黄的| 亚洲精品91天天久久人人 | 日韩69av| 99久久99久国产黄毛片 | 精品国产乱码一区二 | 人人看看人人 | 免费看成人av | 精品国产一区二区三区久久 | 国产精品日韩欧美一区二区 | 人人干天天干 | 亚洲艳情 | 99九九热只有国产精品 | 国产高清不卡在线 | 欧美日韩综合在线 | 欧美日韩国产一区二区三区 | 免费高清在线视频一区· | 欧美午夜精品久久久久久孕妇 | 成人免费网视频 | 日韩电影黄色 | 亚洲精品视频网站在线观看 | 国产成人l区 | 97精品国产97久久久久久 | 国产一级做a爱片久久毛片a | 亚洲天堂精品视频在线观看 | 日韩免费观看av | 国产在线观看 | 91精品国产自产老师啪 | 在线观看免费视频你懂的 | 久久精品一区二区三 | 国产高清久久 | 日韩欧美一区二区三区在线 | 成人久久亚洲 | 日韩免费视频线观看 | 激情五月开心 | 成人免费视频网站 | 91麻豆精品国产自产 | 99久久精品免费看国产一区二区三区 | 在线99| 亚洲91视频| 国产 日韩 欧美 中文 在线播放 | 久久综合久久综合这里只有精品 | 久久久久国产精品视频 | 亚洲激情国产精品 | 免费在线黄网 | 久久99久久99精品免观看软件 | 丁香婷婷色月天 | 天天人人 | 特级西西www44高清大胆图片 | 久久久久久麻豆 | 国内外成人在线视频 | 天天干,天天操,天天射 | 久久亚洲精品国产亚洲老地址 | 国产精品视频999 | 激情五月伊人 | 啪啪免费试看 | 国产精品久久二区 | 91成人在线视频观看 | 国产精品男女 | 一区二区视频在线免费观看 | 亚洲精品合集 | 国产精品日韩在线观看 | 美女视频国产 | 日韩av在线免费看 | 亚洲视频在线免费观看 | 成 人 黄 色 视频 免费观看 | 日韩精品久久一区二区 | 亚洲欧洲精品一区二区 | 在线播放亚洲激情 | 亚洲精品免费看 | 午夜av在线播放 | 蜜桃av久久久亚洲精品 | 亚洲国产视频在线 | 久久久精品国产免费观看一区二区 | 欧美中文字幕第一页 | 在线观看视频你懂得 | 欧美大荫蒂xxx | 成人午夜影院 | 天天射狠狠干 | 成人av.com| 在线免费视频一区 | 日韩一区二区三区免费视频 | 中文字幕乱视频 | 国产精品av久久久久久无 | 97色在线观看免费视频 | 亚洲一区二区黄色 | 久久视频这里有精品 | 日本女人的性生活视频 | 天天爽天天射 | 久久国产电影院 | 99综合久久| 国产操在线 | 成年人免费电影在线观看 | 国产不卡片 | 日韩r级电影在线观看 | 黄色成人av| 国产午夜三级一区二区三 | 三级av在线免费观看 | 日韩伦理片一区二区三区 | 日韩午夜三级 | 国产精品私人影院 | 四虎在线观看精品视频 | 欧美午夜久久久 | 91在线精品视频 | 99色精品视频 | 久草免费色站 | 免费黄色av电影 | 久久黄页 | 97麻豆视频| 午夜久久精品 | 日韩在线电影 | 狠狠插狠狠干 | 日韩欧美有码在线 | 久久综合久久综合久久综合 | 人人干干人人 | 日日草天天干 | 99色免费视频 | 欧美日韩精品在线 | 美女免费av | 欧美疯狂性受xxxxx另类 | 天天操天天干天天操天天干 | 国产精品久久久久久久久久 | 一区二区三区三区在线 | 亚洲精品久久久久中文字幕m男 | 热久久视久久精品18亚洲精品 | 亚洲精品66 | 九九九九九九精品任你躁 | 99精彩视频在线观看免费 | 香蕉视频国产在线观看 | ,午夜性刺激免费看视频 | 四虎5151久久欧美毛片 | 91漂亮少妇露脸在线播放 | 欧美伦理一区二区三区 | 免费男女羞羞的视频网站中文字幕 | 国产精品久久久久久高潮 | 欧美日本三级 | 在线99热| 精品一区 精品二区 | 久久国产精品影片 | 99精品国产99久久久久久福利 | 午夜少妇av | 超碰公开在线 | 天天操天天干天天摸 | 午夜电影久久久 | 美女一二三区 | 国产理论免费 | 中文字幕综合在线 | 五月天激情综合 | 国产精品99久久久久久宅男 | 亚洲精品免费视频 | 日韩精品一区二区三区免费观看视频 | 黄色av成人在线观看 | 欧美一区二视频在线免费观看 | 在线欧美a| 亚洲 欧美 精品 | 中文字幕丝袜制服 | 99精品国产成人一区二区 | 亚洲国产中文字幕在线 | 成人久久亚洲 | 欧美激情另类 | 成人免费在线电影 | 三级av黄色| 欧美动漫一区二区三区 | www.色午夜,com| 狠狠干网址 | 99在线视频网站 | 成人羞羞视频在线观看免费 | 国内精品久久久久影院男同志 | 日本一区二区免费在线观看 | 精品9999| 久久精品麻豆 | 精品久久中文 | 国产精品久久久久久久久久免费看 | 热久久视久久精品18亚洲精品 | 黄色网www | 婷婷社区五月天 | 亚洲丝袜一区二区 | 五月宗合网 | 精品人妖videos欧美人妖 | 午夜影视剧场 | 日韩电影黄色 | 成人综合免费 | 伊人激情综合 | 麻豆视频免费入口 | 国产精品乱码一区二区视频 | 日韩激情av在线 | 国产伦精品一区二区三区在线 | 黄色在线观看免费网站 | 亚洲一级片av | 国产区精品区 | 亚洲精品中文字幕视频 | 97成人免费视频 | 国产精品亚 | 91成人网在线 | 国产在线第三页 | 国产精品综合久久久久久 | 婷婷精品视频 | 九草视频在线 | 婷婷开心久久网 | 91九色蝌蚪| 欧美日韩视频在线观看免费 | 五月天亚洲综合小说网 | 天天爱天天操 | 麻豆视频观看 | 黄色网址国产 | 四虎4hu永久免费 | 99av国产精品欲麻豆 | 亚州日韩中文字幕 | 亚洲美女精品 | 日韩欧美大片免费观看 | 麻豆精品视频 | 日本不卡123区 | 国产精品免费一区二区三区 | 一级黄色电影网站 | 在线99热| 人人爽人人澡人人添人人人人 | 制服丝袜一区二区 | 精品久久久久久久久中文字幕 | 久久久黄色免费网站 | 国产精品成人aaaaa网站 | 中文字幕精品三区 | 在线播放一区二区三区 | 免费在线观看的av网站 | 蜜臀久久99精品久久久久久网站 | 激情婷婷久久 | 精品一区二区在线免费观看 | 久久视频网 | 97av影院| 成人在线免费看视频 | 黄色av免费看 | av超碰在线观看 | av导航福利 | 四虎影视国产精品免费久久 | 国产区精品视频 | 视频二区在线 | 亚洲成人影音 | 国产精品欧美久久久久久 | 91大神视频网站 | 美女中文字幕 | 97人人澡人人爽人人模亚洲 | 国产激情久久久 | 国产伦理精品一区二区 | 成人av网站在线观看 | 天天摸日日摸人人看 | 三级黄色网址 | 最近高清中文字幕在线国语5 | 在线日本看片免费人成视久网 | 免费av网址在线观看 | 国产一区二区在线视频观看 | 国产资源在线视频 | 国产麻豆视频 | 久久中文字幕在线视频 | 久久狠狠一本精品综合网 | 久久综合九色综合久久久精品综合 | 中文字幕第一页在线 | 成人污视频在线观看 | 久草电影网 | 欧美另类高潮 | 草久在线 | 精品产品国产在线不卡 | 在线电影日韩 | 正在播放久久 | 欧美在线视频一区二区三区 | 最新午夜电影 | 伊人黄| 国产成人在线播放 | 99精品欧美一区二区三区黑人哦 | 免费国产ww| 久久久久久毛片 | 精品在线观看国产 | 亚洲高清91| 制服丝袜一区二区 | 这里只有精品视频在线 | 国产精品99久久久精品免费观看 | 国产乱老熟视频网88av | 久久九九国产视频 | 中文字幕人成不卡一区 | 丁五月婷婷| 91久久久久久久一区二区 | 国产精品美女久久久久久久 | 96av在线视频 | 天天干天天拍天天操 | 日韩精品视频免费专区在线播放 | 久久综合狠狠综合 | 日本精品一区二区在线观看 | 久久久精品午夜 | 成人高清在线观看 | 成年一级片 | 国产一级大片免费看 | 免费福利片2019潦草影视午夜 | 亚洲成人精品久久久 | 韩国在线一区二区 | 国产va精品免费观看 | 日日摸日日添夜夜爽97 | 久久高清片 | 成人在线视频网 | 欧美日本不卡视频 | 日本久久成人中文字幕电影 | 在线色亚洲 | 在线观看免费成人av | 一本一本久久a久久 | 视频二区| 91九色综合| 中文字幕精品一区二区精品 | 日日干天夜夜 | 色久网 | 久久在线观看视频 | 国产一区二区在线免费 | 亚洲天堂毛片 | 亚州av免费 | 91高清一区| 久艹视频免费观看 | 国产精品久久二区 | 国产精品一区二区在线播放 | 最近能播放的中文字幕 | 午夜视频在线瓜伦 | 精品二区视频 | 免费久久久久久 | 免费无遮挡动漫网站 | 日韩精品一区电影 | 天天激情综合 | 亚洲综合在线一区二区三区 | .国产精品成人自产拍在线观看6 | 国产综合精品一区二区三区 | 欧美日韩高清在线一区 | 亚洲一区二区视频在线 | 久草在线电影网 | 免费观看黄色av | 人人爽人人插 | 亚洲欧美日本一区二区三区 | 96超碰在线 | 国产免费观看视频 | 啪啪激情网 | 日韩午夜电影院 | 激情五月婷婷综合网 | 天天操天天吃 | 久草视频在线资源 | 天天插天天狠 | 97看片吧| 伊人色播| 五月天中文字幕mv在线 | 久久6精品 | 亚洲干视频在线观看 | 丁香婷婷在线观看 | 91看片在线观看 | 911av视频| 一区二区视频播放 | 992tv人人网tv亚洲精品 | 97超在线 | 黄网站色视频 | 亚洲国产中文在线观看 | 久久狠狠亚洲综合 | 免费人成网 | 日韩av视屏 | 日韩免费在线视频观看 | 色欧美成人精品a∨在线观看 | 久草免费在线视频 | 91精彩视频 | 国产精品久久精品 | 日韩一区二区免费在线观看 | 深夜免费福利网站 | 午夜精品久久久久久久久久 | 97精品国产97久久久久久久久久久久 | 成人国产综合 | 美女福利视频一区二区 | 91九色视频导航 | 欧美日韩二三区 | 日韩在线电影一区 | 麻豆视频免费网站 | 亚洲视频在线免费看 | 国产精品手机看片 | 超碰在线1 | 婷婷精品国产欧美精品亚洲人人爽 | www.亚洲精品在线 | 亚洲欧洲日韩在线观看 | 日日婷婷夜日日天干 | 激情电影影院 | 视频国产精品 | 8090yy亚洲精品久久 | 午夜视频在线观看一区 | 成人精品国产 | 欧美成人影音 | 天天干天天干天天干天天干天天干天天干 | 91精品91 | 国产精品毛片一区视频 | 在线观看国产福利片 | 91观看视频 | 国产另类av | 国产视频在线观看免费 | 九九九九九九精品任你躁 | 欧美在线aa | 亚洲精品mv在线观看 | 米奇四色影视 | 亚洲视频在线视频 | 日韩黄色免费在线观看 | 日韩av免费在线电影 | 久久精品一区二区三区国产主播 | 97超碰影视 | 国产精品成人久久久久久久 | 国产精品久久久久一区 | 精品国产一区二区三区久久久久久 | 黄色一区三区 | 日韩毛片一区 | 国产高清不卡一区二区三区 | 亚洲午夜精品久久久久久久久久久久 | 成人黄大片 | 五月天天天操 | 亚洲国产伊人 | 国产成人av电影 | 天天操狠狠干 | 日本中文在线播放 | 日韩欧美在线观看一区 | 欧美一区二区三区免费看 | 亚洲成人av一区二区 | 九九视频在线观看视频6 | 成 人 免费 黄 色 视频 | 国产精品美女久久久久久久网站 | 网站在线观看你们懂的 | 狠狠操狠狠操 | 午夜丰满寂寞少妇精品 | 中文字幕在线免费 | 热久久99这里有精品 | 久久久一本精品99久久精品66 | 久久婷五月 | av中文在线影视 | 久久精品一区二区三区国产主播 | 亚洲 欧美 精品 | 精品视频免费在线 | 欧美在线观看视频免费 | 婷婷性综合 | 婷婷在线视频观看 | 中文字幕 欧美性 | 国产手机视频在线 | 婷婷久久国产 | 欧美一级大片在线观看 | 天天操综 | 欧美一级片免费在线观看 | 西西人体4444www高清视频 | 色播激情五月 | 一本色道久久精品 | h动漫中文字幕 | 激情网第四色 | 国产精品剧情在线亚洲 | 免费成人黄色片 | 日韩精品最新在线观看 | 69热国产视频 | 欧美另类交在线观看 | 超碰在线免费福利 | 99热播精品| 亚洲专区在线 | 亚洲国产中文字幕在线视频综合 | 国产精品麻豆99久久久久久 | 国产精品高清在线 | 九九视频免费在线观看 | 亚洲最新av网站 | 国产在线最新 | 99久久久免费视频 | 麻豆94tv免费版 | 国产一区欧美二区 | 成人视屏免费看 | 一级片免费观看视频 | 一级黄色大片在线观看 | 久久艹国产 | 国产精品免费一区二区 | 久草久| 韩国精品福利一区二区三区 | 男女拍拍免费视频 | 亚洲高清在线精品 | 国产中文字幕久久 | 久久精品综合 | 欧美成人精品欧美一级乱 | 狠狠操在线 | 国产日韩在线看 | 午夜视频在线观看欧美 | 三级在线视频播放 | 精品国产伦一区二区三区免费 | 国产精品毛片一区视频播 | 亚洲一级二级 | 亚洲高清资源 | 日韩免费在线 | 日韩在线观看一区 | 国产精品99久久久精品免费观看 | 亚洲国产精品第一区二区 | 伊人伊成久久人综合网小说 | 制服丝袜成人在线 | 91成人精品观看 | 伊人五月综合 | 国产精品久久久久久久久久直播 | 丁香激情网 | 网站在线观看日韩 | 二区视频在线 | 亚洲爱爱视频 | 96亚洲精品久久 | 日批在线观看 | 国产精品12 | 亚洲最新视频在线播放 | 国产a精品 | 国产成人一区二区啪在线观看 | 五月天天天操 | 99热这里只有精品国产首页 | 99热在线精品观看 | 麻豆视频网址 | 欧美最猛性xxxxx(亚洲精品) | www.久久色 | 国产在线专区 | 国产97色 | 亚洲精品资源 | 国产99久久久国产精品免费看 | 亚洲第一中文网 | 久草a在线| 97视频播放 | 中文永久免费观看 | 久久精品久久精品久久精品 | 天天综合网久久综合网 | 亚洲精品2区 | 一区二区欧美日韩 | 亚洲乱码精品久久久 | 国产黄色在线网站 | 国产主播大尺度精品福利免费 | 99色在线观看 | 久久久免费国产 | 91麻豆精品国产91久久久久久 | 欧美日韩在线精品 | 日韩免费成人av | 又污又黄的网站 | 日韩在线观看一区 | 激情av网址 | 美女久久久久久久久久 | 久久久伊人网 | 久久视频免费看 | 午夜精品久久久99热福利 | 一级成人免费视频 | 日韩中文字幕免费 | 久久综合免费 | 在线看国产视频 | 香蕉视频91 | 国产成人免费观看久久久 | 国产精品女教师 | 欧美在线视频一区二区三区 | 夜色在线资源 | 久久精品爱视频 | 在线观看一区视频 | 欧美国产精品一区二区 | 国产日韩一区在线 | 欧美日bb | 国产亚洲精品久久 | 亚洲精品国产电影 | 天天射天天射 | 免费男女羞羞的视频网站中文字幕 | 国产精品久久久久久模特 | 青春草国产视频 | 久久精品99北条麻妃 | 亚洲禁18久人片 | 99视频久久 | 中文字幕第一页在线视频 | 日韩在线欧美在线 | 成人久久 | 国产成人久久av977小说 | 91网页版在线观看 | 亚洲精品中文在线观看 | 中文字幕日韩av | 91av免费观看 | 91色国产在线 | 日日夜夜天天 | 亚洲国产视频直播 | 日韩免费电影在线观看 | 国产在线 一区二区三区 | 99在线国产| 亚洲精品在线看 | 国产精品久久久久久久免费大片 | 精品视频免费播放 | 国产视频在线看 | 日韩精品一区二区三区高清免费 | 中文字幕一区二区三区久久蜜桃 | 97视频在线免费播放 | 色综合久久久网 | 亚洲一区天堂 | 香蕉影视在线观看 | 国产成人精品av | 日韩免费电影网 | 色亚洲网 | 五月婷婷丁香色 | 亚洲高清视频在线 | 精品一区精品二区高清 | 久久久国产视频 | 亚州av免费| 久久视频一区二区 | 亚洲精品日韩在线观看 | 97人人澡人人添人人爽超碰 | 在线观看日本高清mv视频 | 国产亚洲在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 夜夜操天天操 | 日韩 在线观看 | 国产精品国产亚洲精品看不卡 | 久久久久在线视频 | 性色av免费观看 | 国产高清一区二区 | 久久久久成人免费 | 最近中文字幕视频网 | 久久久久久久久久电影 | 中文字幕色在线视频 | 天天综合成人网 | 欧美国产精品久久久久久免费 | 国产精品69久久久久 | 日本狠狠色 | 日韩精品影视 | 99免费在线视频观看 | 91视频在线免费 | 国产在线日本 | 99国产在线观看 | 亚洲成人欧美 | 91久久精品一区二区二区 | 日韩欧美一区二区三区视频 | 国产片免费在线观看视频 | 免费网站看v片在线a | 国产色秀视频 | 亚洲 欧美 国产 va在线影院 | 久久爱导航 | 欧美日韩国产一二三区 | 国产精品久久99 | 久草综合在线 | 欧美日韩1区 | 国产成a人亚洲精v品在线观看 | 午夜精品电影 | 国产美女无遮挡永久免费 | 伊人午夜视频 | 婷婷综合网 | 欧美成人性战久久 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 天天爱av导航 | 国产三级精品三级在线观看 | 久射网| 91色九色| 国产亚洲精品久久久久久久久久久久 | 中文字幕资源站 | 亚洲国产精品久久 | 在线一区av | 日批视频 | 在线91视频 | 夜夜骑日日操 | 成人国产精品久久久 | 999成人| 在线观看黄色的网站 | 91av亚洲| 丁香视频在线观看 | 午夜视频在线网站 | 久草影视在线 | 国产裸体视频网站 | 在线www色 | 精品久久久久免费极品大片 | 五月天丁香亚洲 | 日韩成人精品一区二区 | 在线最新av | av日韩精品 | 日韩精品中文字幕在线观看 | 欧美男同视频网站 | 久久热亚洲 | 亚洲精品一区二区在线观看 | 免费的成人av | 国产精品一区二区在线免费观看 |