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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言中的结构体,联合,链表和枚举,位域(上)

發布時間:2024/4/17 编程问答 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中的结构体,联合,链表和枚举,位域(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結構名只能表示一個結構形式,
編譯系統并不對它分配內存空間。 只有當某變量被說明為這種類型的結構時,才對該變量分配存儲空間。

一、結構的定義
定義一個結構的一般形式為:
struct 結構名
{
成員表列
};
成員表由若干個成員組成, 每個成員都是該結構的一個組成部分。對每個成員也必須作類型說明,其形式為:
類型說明符 成員名;
成員名的命名應符合標識符的書寫規定。例如:

struct stu { int num; char name[20]; char sex; float score; };

在這個結構定義中,結構名為stu,該結構由4個成員組成。 第一個成員為num,整型變量;第二個成員為name,字符數組;第三個成員為sex,字符變量;第四個成員為score,實型變量。 應注意在括號后的分號是不可少的。結構定義之后,即可進行變量說明。 凡說明為結構stu的變量都由上述4個成員組成。由此可見, 結構是一種復雜的數據類型,是數目固定,類型不同的若干有序變量的集合。
二、結構類型變量的說明
說明結構變量有以下三種方法。以上面定義的stu為例來加以說明。
1. 先定義結構,再說明結構變量。如:

struct stu { int num; char name[20]; char sex; float score; }; struct stu boy1,boy2;

說明了兩個變量boy1和boy2為stu結構類型。也可以用宏定義使一個符號常量來表示一個結構類型,例如:

#define STU struct stu STU { int num; char name[20]; char sex; float score; }; STU boy1,boy2;

2. 在定義結構類型的同時說明結構變量。例如:

struct stu { int num; char name[20]; char sex; float score; }boy1,boy2;

3. 直接說明結構變量。例如:

struct { int num; char name[20]; char sex; float score; }boy1,boy2;

第三種方法與第二種方法的區別在于第三種方法中省去了結構名,而直接給出結構變量。三種方法中說明的boy1,boy2變量都具有圖7.1所示的結構。說明了boy1,boy2變量為stu類型后,即可向這兩個變量中的各個成員賦值。在上述stu結構定義中,所有的成員都是基本數據類型或數組類型。成員也可以又是一個結構, 即構成了嵌套的結構。例如,圖7.2給出了另一個數據結構。 按圖7.2可給出以下結構定義:

struct date{ int month; int day; int year; } struct{ int num; char name[20]; char sex; struct date birthday; float score; }boy1,boy2;

首先定義一個結構date,由month(月)、day(日)、year(年) 三個成員組成。 在定義并說明變量 boy1 和 boy2 時, 其中的成員birthday被說明為data結構類型。成員名可與程序中其它變量同名,互不干擾。結構變量成員的表示方法在程序中使用結構變量時, 往往不把它作為一個整體來使用。

在ANSI C中除了允許具有相同類型的結構變量相互賦值以外, 一般對結構變量的使用,包括賦值、輸入、輸出、 運算等都是通過結構變量的成員來實現的。
表示結構變量成員的一般形式是: 結構變量名.成員名 例如:boy1.num 即第一個人的學號 boy2.sex 即第二個人的性別 如果成員本身又是一個結構則必須逐級找到最低級的成員才能使用。例如:boy1.birthday.month 即第一個人出生的月份成員可以在程序中單獨使用,與普通變量完全相同。
結構變量的賦值
前面已經介紹,結構變量的賦值就是給各成員賦值。 可用輸入語句或賦值語句來完成。
[例7.1]給結構變量賦值并輸出其值。

main(){ struct stu { int num; char *name; char sex; float score; } boy1,boy2; boy1.num=102; boy1.name="Zhang ping"; printf("input sex and score\n"); scanf("%c %f",&boy1.sex,&boy1.score); boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,boy2.name); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); }

本程序中用賦值語句給num和name兩個成員賦值,name是一個字符串指針變量。用scanf函數動態地輸入sex和score成員值,然后把boy1的所有成員的值整體賦予boy2。最后分別輸出boy2 的各個成員值。本例表示了結構變量的賦值、輸入和輸出的方法。
結構變量的初始化
如果結構變量是全局變量或為靜態變量, 則可對它作初始化賦值。對局部或自動結構變量不能作初始化賦值。
[例7.2]外部結構變量初始化。

struct stu { int num; char *name; char sex; float score; } boy2,boy1={102,"Zhang ping",'M',78.5}; main() { boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,boy2.name); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); } struct stu { int num; char *name; char sex; float score; }boy2,boy1={102,"Zhang ping",'M',78.5}; main() { boy2=boy1; …… }

本例中,boy2,boy1均被定義為外部結構變量,并對boy1作了初始化賦值。在main函數中,把boy1的值整體賦予boy2, 然后用兩個printf語句輸出boy2各成員的值。
[例7.3]靜態結構變量初始化。

main() { static struct stu { int num; char *name; char sex; float score; }boy2,boy1={102,"Zhang ping",'M',78.5}; boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,boy2.name); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); } static struct stu { int num; char *name; char sex; float score; }boy2,boy1={102,"Zhang ping",'M',78.5};

本例是把boy1,boy2都定義為靜態局部的結構變量, 同樣可以作初始化賦值。

結構數組
數組的元素也可以是結構類型的。 因此可以構成結構型數組。結構數組的每一個元素都是具有相同結構類型的下標結構變量。 在實際應用中,經常用結構數組來表示具有相同數據結構的一個群體。如一個班的學生檔案,一個車間職工的工資表等。
結構數組的定義方法和結構變量相似,只需說明它為數組類型即可。例如:

struct stu { int num; char *name; char sex; float score; }boy[5];

定義了一個結構數組boy1,共有5個元素,boy[0]~boy[4]。每個數組元素都具有struct stu的結構形式。 對外部結構數組或靜態結構數組可以作初始化賦值,例如:

struct stu { int num; char *name; char sex; float score; }boy[5]={ {101,"Li ping","M",45}, {102,"Zhang ping","M",62.5}, {103,"He fang","F",92.5}, {104,"Cheng ling","F",87}, {105,"Wang ming","M",58}; }

當對全部元素作初始化賦值時,也可不給出數組長度。
[例7.4]計算學生的平均成績和不及格的人數。

struct stu { int num; char *name; char sex; float score; }boy[5]={ {101,"Li ping",'M',45}, {102,"Zhang ping",'M',62.5}, {103,"He fang",'F',92.5}, {104,"Cheng ling",'F',87}, {105,"Wang ming",'M',58}, }; main() { int i,c=0; float ave,s=0; for(i=0;i<5;i++) { s+=boy[i].score; if(boy[i].score<60) c+=1; } printf("s=%f\n",s); ave=s/5; printf("average=%f\ncount=%d\n",ave,c); }

本例程序中定義了一個外部結構數組boy,共5個元素, 并作了初始化賦值。在main函數中用for語句逐個累加各元素的score 成員值存于s之中,如score的值小于60(不及格)即計數器C加1, 循環完畢后計算平均成績,并輸出全班總分,平均分及不及格人數。
[例7.5]建立同學通訊錄

#include"stdio.h" #define NUM 3 struct mem { char name[20]; char phone[10]; }; main() { struct mem man[NUM]; int i; for(i=0;i{ printf("input name:\n"); gets(man[i].name); printf("input phone:\n"); gets(man[i].phone); } printf("name\t\t\tphone\n\n"); for(i=0;iprintf("%s\t\t\t%s\n",man[i].name,man[i].phone); }

本程序中定義了一個結構mem,它有兩個成員name和phone 用來表示姓名和電話號碼。在主函數中定義man為具有mem 類型的結構數組。在for語句中,用gets函數分別輸入各個元素中兩個成員的值。然后又在for語句中用printf語句輸出各元素中兩個成員值。
結構指針變量
結構指針變量的說明和使用一個指針變量當用來指向一個結構變量時, 稱之為結構指針變量。
結構指針變量中的值是所指向的結構變量的首地址。 通過結構指針即可訪問該結構變量, 這與數組指針和函數指針的情況是相同的。結構指針變量說明的一般形式為:
struct 結構名*結構指針變量名
例如,在前面的例7.1中定義了stu這個結構, 如要說明一個指向stu的指針變量pstu,可寫為:
struct stu *pstu;
當然也可在定義stu結構時同時說明pstu。與前面討論的各類指針變量相同,結構指針變量也必須要先賦值后才能使用。賦值是把結構變量的首地址賦予該指針變量, 不能把結構名賦予該指針變量。如果boy是被說明為stu類型的結構變量,則: pstu=&boy是正確的,而: pstu=&stu是錯誤的。
結構名和結構變量是兩個不同的概念,不能混淆。 結構名只能表示一個結構形式,編譯系統并不對它分配內存空間。 只有當某變量被說明為這種類型的結構時,才對該變量分配存儲空間。 因此上面&stu這種寫法是錯誤的,不可能去取一個結構名的首地址。 有了結構指針變量,就能更方便地訪問結構變量的各個成員。
其訪問的一般形式為: (*結構指針變量).成員名 或為:
結構指針變量->成員名
例如: (*pstu).num或者: pstu->num
應該注意(*pstu)兩側的括號不可少, 因為成員符“.”的優先級高于“*”。如去掉括號寫作*pstu.num則等效于*(pstu.num),這樣,意義就完全不對了。 下面通過例子來說明結構指針變量的具體說明和使用方法。
[例7.6]

struct stu { int num; char *name; char sex; float score; } boy1={102,"Zhang ping",'M',78.5},*pstu; main() { pstu=&boy1; printf("Number=%d\nName=%s\n",boy1.num,boy1.name); printf("Sex=%c\nScore=%f\n\n",boy1.sex,boy1.score); printf("Number=%d\nName=%s\n",(*pstu).num,(*pstu).name); printf("Sex=%c\nScore=%f\n\n",(*pstu).sex,(*pstu).score); printf("Number=%d\nName=%s\n",pstu->num,pstu->name); printf("Sex=%c\nScore=%f\n\n",pstu->sex,pstu->score); }

本例程序定義了一個結構stu,定義了stu類型結構變量boy1 并作了初始化賦值,還定義了一個指向stu類型結構的指針變量pstu。在main函數中,pstu被賦予boy1的地址,因此pstu指向boy1 。然后在printf語句內用三種形式輸出boy1的各個成員值。 從運行結果可以看出:
結構變量.成員名
(*結構指針變量).成員名
結構指針變量->成員名

這三種用于表示結構成員的形式是完全等效的。結構數組指針變量結構指針變量可以指向一個結構數組, 這時結構指針變量的值是整個結構數組的首地址。 結構指針變量也可指向結構數組的一個元素,這時結構指針變量的值是該結構數組元素的首地址。設ps為指向結構數組的指針變量,則ps也指向該結構數組的0號元素,ps+1指向1號元素,ps+i則指向i號元素。 這與普通數組的情況是一致的。
[例7.7]用指針變量輸出結構數組。

struct stu { int num; char *name; char sex; float score; }boy[5]={ {101,"Zhou ping",'M',45}, {102,"Zhang ping",'M',62.5}, {103,"Liou fang",'F',92.5}, {104,"Cheng ling",'F',87}, {105,"Wang ming",'M',58}, }; main() { struct stu *ps; printf("No\tName\t\t\tSex\tScore\t\n"); for(ps=boy;psprintf("%d\t%s\t\t%c\t%f\t\n",ps->num,ps->name,ps->sex,ps-> score); }

在程序中,定義了stu結構類型的外部數組boy 并作了初始化賦值。在main函數內定義ps為指向stu類型的指針。在循環語句for的表達式1中,ps被賦予boy的首地址,然后循環5次,輸出boy數組中各成員值。 應該注意的是, 一個結構指針變量雖然可以用來訪問結構變量或結構數組元素的成員,但是,不能使它指向一個成員。 也就是說不允許取一個成員的地址來賦予它。因此,下面的賦值是錯誤的。 ps=&boy[1].sex;而只能是:ps=boy;(賦予數組首地址)
或者是:
ps=&boy[0];(賦予0號元素首地址)
結構指針變量作函數參數
在ANSI C標準中允許用結構變量作函數參數進行整體傳送。 但是這種傳送要將全部成員逐個傳送, 特別是成員為數組時將會使傳送的時間和空間開銷很大,嚴重地降低了程序的效率。 因此最好的辦法就是使用指針,即用指針變量作函數參數進行傳送。 這時由實參傳向形參的只是地址,從而減少了時間和空間的開銷。
[例7.8]題目與例7.4相同,計算一組學生的平均成績和不及格人數。
用結構指針變量作函數參數編程。

struct stu { int num; char *name; char sex; float score;}boy[5]={ {101,"Li ping",'M',45}, {102,"Zhang ping",'M',62.5}, {103,"He fang",'F',92.5}, {104,"Cheng ling",'F',87}, {105,"Wang ming",'M',58}, }; main() { struct stu *ps; void ave(struct stu *ps); ps=boy; ave(ps); } void ave(struct stu *ps) { int c=0,i; float ave,s=0; for(i=0;i<5;i++,ps++) { s+=ps->score; if(ps->score<60) c+=1; } printf("s=%f\n",s); ave=s/5; printf("average=%f\ncount=%d\n",ave,c); }

本程序中定義了函數ave,其形參為結構指針變量ps。boy 被定義為外部結構數組,因此在整個源程序中有效。在main 函數中定義說明了結構指針變量ps,并把boy的首地址賦予它,使ps指向boy 數組。然后以ps作實參調用函數ave。在函數ave 中完成計算平均成績和統計不及格人數的工作并輸出結果。與例7.4程序相比,由于本程序全部采用指針變量作運算和處理,故速度更快,程序效率更高。

topoic=動態存儲分配
在數組一章中,曾介紹過數組的長度是預先定義好的, 在整個程序中固定不變。C語言中不允許動態數組類型。例如: int n;scanf("%d",&n);int a[n]; 用變量表示長度,想對數組的大小作動態說明, 這是錯誤的。但是在實際的編程中,往往會發生這種情況, 即所需的內存空間取決于實際輸入的數據,而無法預先確定。對于這種問題, 用數組的辦法很難解決。為了解決上述問題,C語言提供了一些內存管理函數,這些內存管理函數可以按需要動態地分配內存空間, 也可把不再使用的空間回收待用,為有效地利用內存資源提供了手段。 常用的內存管理函數有以下三個:
1.分配內存空間函數malloc
調用形式: (類型說明符*) malloc (size) 功能:在內存的動態存儲區中分配一塊長度為"size" 字節的連續區域。函數的返回值為該區域的首地址。 “類型說明符”表示把該區域用于何種數據類型。(類型說明符*)表示把返回值強制轉換為該類型指針?!皊ize”是一個無符號數。例如: pc=(char *) malloc (100); 表示分配100個字節的內存空間,并強制轉換為字符數組類型, 函數的返回值為指向該字符數組的指針, 把該指針賦予指針變量pc。
2.分配內存空間函數 calloc
calloc 也用于分配內存空間。調用形式: (類型說明符*)calloc(n,size) 功能:在內存動態存儲區中分配n塊長度為“size”字節的連續區域。函數的返回值為該區域的首地址。(類型說明符*)用于強制類型轉換。calloc函數與malloc 函數的區別僅在于一次可以分配n塊區域。例如: ps=(struet stu*) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的結構長度。因此該語句的意思是:按stu的長度分配2塊連續區域,強制轉換為stu類型,并把其首地址賦予指針變量ps。
3.釋放內存空間函數free
調用形式: free(void*ptr); 功能:釋放ptr所指向的一塊內存空間,ptr 是一個任意類型的指針變量,它指向被釋放區域的首地址。被釋放區應是由malloc或calloc函數所分配的區域:[例7.9]分配一塊區域,輸入一個學生數據。

main() { struct stu { int num; char *name; char sex; float score; } *ps; ps=(struct stu*)malloc(sizeof(struct stu)); ps->num=102; ps->name="Zhang ping"; ps->sex='M'; ps->score=62.5; printf("Number=%d\nName=%s\n",ps->num,ps->name); printf("Sex=%c\nScore=%f\n",ps->sex,ps->score); free(ps); }

本例中,定義了結構stu,定義了stu類型指針變量ps。 然后分配一塊stu大內存區,并把首地址賦予ps,使ps指向該區域。再以ps為指向結構的指針變量對各成員賦值,并用printf 輸出各成員值。最后用free函數釋放ps指向的內存空間。 整個程序包含了申請內存空間、使用內存空間、釋放內存空間三個步驟, 實現存儲空間的動態分配。鏈表的概念在例7.9中采用了動態分配的辦法為一個結構分配內存空間。每一次分配一塊空間可用來存放一個學生的數據, 我們可稱之為一個結點。有多少個學生就應該申請分配多少塊內存空間, 也就是說要建立多少個結點。當然用結構數組也可以完成上述工作, 但如果預先不能準確把握學生人數,也就無法確定數組大小。 而且當學生留級、退學之后也不能把該元素占用的空間從數組中釋放出來。 用動態存儲的方法可以很好地解決這些問題。 有一個學生就分配一個結點,無須預先確定學生的準確人數,某學生退學, 可刪去該結點,并釋放該結點占用的存儲空間。從而節約了寶貴的內存資源。 另一方面,用數組的方法必須占用一塊連續的內存區域。 而使用動態分配時,每個結點之間可以是不連續的(結點內是連續的)。 結點之間的聯系可以用指針實現。 即在結點結構中定義一個成員項用來存放下一結點的首地址,這個用于存放地址的成員,常把它稱為指針域??稍诘谝粋€結點的指針域內存入第二個結點的首地址, 在第二個結點的指針域內又存放第三個結點的首地址, 如此串連下去直到最后一個結點。最后一個結點因無后續結點連接,其指針域可賦為0。這樣一種連接方式,在數據結構中稱為“鏈表”。圖7.3為鏈表的示意圖。
在圖7.3中,第0個結點稱為頭結點, 它存放有第一個結點的首地址,它沒有數據,只是一個指針變量。 以下的每個結點都分為兩個域,一個是數據域,存放各種實際的數據,如學號num,姓名name,性別sex和成績score等。另一個域為指針域, 存放下一結點的首地址。鏈表中的每一個結點都是同一種結構類型。例如, 一個存放學生學號和成績的結點應為以下結構:

struct stu { int num; int score; struct stu *next; }

前兩個成員項組成數據域,后一個成員項next構成指針域, 它是一個指向stu類型結構的指針變量。鏈表的基本操作對鏈表的主要操作有以下幾種:
1.建立鏈表;
2.結構的查找與輸出;
3.插入一個結點;
4.刪除一個結點;
下面通過例題來說明這些操作。
[例7.10]建立一個三個結點的鏈表,存放學生數據。 為簡單起見, 我們假定學生數據結構中只有學號和年齡兩項。
可編寫一個建立鏈表的函數creat。程序如下:

#define NULL 0 #define TYPE struct stu #define LEN sizeof (struct stu) struct stu { int num; int age; struct stu *next; }; TYPE *creat(int n) { struct stu *head,*pf,*pb; int i; for(i=0;i{ pb=(TYPE*) malloc(LEN); printf("input Number and Age\n"); scanf("%d%d",&pb->num,&pb->age); if(i==0) pf=head=pb; else pf->next=pb; pb->next=NULL; pf=pb; } return(head); }

在函數外首先用宏定義對三個符號常量作了定義。這里用TYPE表示struct stu,用LEN表示sizeof(struct stu)主要的目的是為了在以下程序內減少書寫并使閱讀更加方便。結構stu定義為外部類型,程序中的各個函數均可使用該定義。

creat函數用于建立一個有n個結點的鏈表,它是一個指針函數,它返回的指針指向stu結構。在creat函數內定義了三個stu結構的指針變量。head為頭指針,pf 為指向兩相鄰結點的前一結點的指針變量。pb為后一結點的指針變量。在for語句內,用malloc函數建立長度與stu長度相等的空間作為一結點,首地址賦予pb。然后輸入結點數據。如果當前結點為第一結點(i==0),則把pb值 (該結點指針)賦予head和pf。如非第一結點,則把pb值賦予pf 所指結點的指針域成員next。而pb所指結點為當前的最后結點,其指針域賦NULL。 再把pb值賦予pf以作下一次循環準備。
creat函數的形參n,表示所建鏈表的結點數,作為for語句的循環次數。圖7.4表示了creat函數的執行過程。
[例7.11]寫一個函數,在鏈表中按學號查找該結點。

TYPE * search (TYPE *head,int n) { TYPE *p; int i; p=head; while (p->num!=n && p->next!=NULL) p=p->next; if (p->num==n) return (p); if (p->num!=n&& p->next==NULL) printf ("Node %d has not been found!\n",n }

本函數中使用的符號常量TYPE與例7.10的宏定義相同,等于struct stu。函數有兩個形參,head是指向鏈表的指針變量,n為要查找的學號。進入while語句,逐個檢查結點的num成員是否等于n,如果不等于n且指針域不等于NULL(不是最后結點)則后移一個結點,繼續循環。如找到該結點則返回結點指針。 如循環結束仍未找到該結點則輸出“未找到”的提示信息。
[例7.12]寫一個函數,刪除鏈表中的指定結點。刪除一個結點有兩種情況:
1. 被刪除結點是第一個結點。這種情況只需使head指向第二個結點即可。即head=pb->next。其過程如圖7.5所示。
2. 被刪結點不是第一個結點,這種情況使被刪結點的前一結點指向被刪結點的后一結點即可。即pf->next=pb->next。其過程如圖7.6所示。
函數編程如下:

TYPE * delete(TYPE * head,int num) { TYPE *pf,*pb; if(head==NULL) { printf("\nempty list!\n"); goto end;} pb=head; while (pb->num!=num && pb->next!=NULL) {pf=pb;pb=pb->next;} if(pb->num==num) {if(pb==head) head=pb->next; else pf->next=pb->next; free(pb); printf("The node is deleted\n");} else printf("The node not been foud!\n"); end: return head; }

?
函數有兩個形參,head為指向鏈表第一結點的指針變量,num刪結點的學號。 首先判斷鏈表是否為空,為空則不可能有被刪結點。若不為空,則使pb指針指向鏈表的第一個結點。進入while語句后逐個查找被刪結點。找到被刪結點之后再看是否為第一結點,若是則使head指向第二結點(即把第一結點從鏈中刪去),否則使被刪結點的前一結點(pf所指)指向被刪結點的后一結點(被刪結點的指針域所指)。如若循環結束未找到要刪的結點, 則輸出“末找到”的提示信息。最后返回head值。
[例7.13]寫一個函數,在鏈表中指定位置插入一個結點。在一個鏈表的指定位置插入結點, 要求鏈表本身必須是已按某種規律排好序的。例如,在學生數據鏈表中, 要求學號順序插入一個結點。設被插結點的指針為pi。 可在三種不同情況下插入。
1. 原表是空表,只需使head指向被插結點即可。見圖7.7(a)
2. 被插結點值最小,應插入第一結點之前。這種情況下使head指向被插結點,被插結點的指針域指向原來的第一結點則可。即:pi->next=pb;
head=pi; 見圖7.7(b)
3. 在其它位置插入,見圖7.7(c)。這種情況下,使插入位置的前一結點的指針域指向被插結點,使被插結點的指針域指向插入位置的后一結點。即為:pi->next=pb;pf->next=pi;
4. 在表末插入,見圖7.7(d)。這種情況下使原表末結點指針域指向被插結點,被插結點指針域置為NULL。即:

pb->next=pi; pi->next=NULL; TYPE * insert(TYPE * head,TYPE *pi) { TYPE *pf,*pb; pb=head; if(head==NULL) (head=pi; pi->next=NULL;} else { while((pi->num>pb->num)&&(pb->next!=NULL)) {pf=pb; pb=pb->next; } if(pi->num<=pb->num) {if(head==pb)head=pi; else pf->next=pi; pi->next=pb; } else {pb->next=pi; pi->next=NULL;} } return head;}

本函數有兩個形參均為指針變量,head指向鏈表,pi 指向被插結點。函數中首先判斷鏈表是否為空,為空則使head指向被插結點。表若不空,則用while語句循環查找插入位置。找到之后再判斷是否在第一結點之前插入,若是則使head 指向被插結點被插結點指針域指向原第一結點,否則在其它位置插入, 若插入的結點大于表中所有結點,則在表末插入。本函數返回一個指針, 是鏈表的頭指針。 當插入的位置在第一個結點之前時, 插入的新結點成為鏈表的第一個結點,因此head的值也有了改變, 故需要把這個指針返回主調函數。

.

[例7.14]將以上建立鏈表,刪除結點,插入結點的函數組織在一起,再建一個輸出全部結點的函數,然后用main函數調用它們。

#define NULL 0 #define TYPE struct stu #define LEN sizeof(struct stu) struct stu { int num; int age; struct stu *next; }; TYPE * creat(int n) { struct stu *head,*pf,*pb; int i; for(i=0;i{ pb=(TYPE *)malloc(LEN); printf("input Number and Age\n"); scanf("%d%d",&pb->num,&pb->age); if(i==0) pf=head=pb; else pf->next=pb; pb->next=NULL; pf=pb; } return(head); } TYPE * delete(TYPE * head,int num) { TYPE *pf,*pb; if(head==NULL) { printf("\nempty list!\n"); goto end;} pb=head; while (pb->num!=num && pb->next!=NULL) {pf=pb;pb=pb->next;} if(pb->num==num) { if(pb==head) head=pb->next; else pf->next=pb->next; printf("The node is deleted\n"); } else free(pb); printf("The node not been found!\n"); end: return head; } TYPE * insert(TYPE * head,TYPE * pi) { TYPE *pb ,*pf; pb=head; if(head==NULL) { head=pi; pi->next=NULL; } else { while((pi->num>pb->num)&&(pb->next!=NULL)) { pf=pb; pb=pb->next; } if(pi->num<=pb->num) { if(head==pb) head=pi; else pf->next=pi; pi->next=pb; } else { pb->next=pi; pi->next=NULL; } } return head; } void print(TYPE * head) { printf("Number\t\tAge\n"); while(head!=NULL) { printf("%d\t\t%d\n",head->num,head->age); head=head->next; } } main() { TYPE * head,*pnum; int n,num; printf("input number of node: "); scanf("%d",&n); head=creat(n); print(head); printf("Input the deleted number: "); scanf("%d",&num); head=delete(head,num); print(head); printf("Input the inserted number and age: "); pnum=(TYPE *)malloc(LEN); scanf("%d%d",&pnum->num,&pnum->age); head=insert(head,pnum); print(head); }

本例中,print函數用于輸出鏈表中各個結點數據域值。函數的形參head的初值指向鏈表第一個結點。在while語句中,輸出結點值后,head值被改變,指向下一結點。若保留頭指針head, 則應另設一個指針變量,把head值賦予它,再用它來替代head。在main函數中,n為建立結點的數目, num為待刪結點的數據域值;head為指向鏈表的頭指針,pnum為指向待插結點的指針。 main函數中各行的意義是:
第六行輸入所建鏈表的結點數;
第七行調creat函數建立鏈表并把頭指針返回給head;
第八行調print函數輸出鏈表;
第十行輸入待刪結點的學號;
第十一行調delete函數刪除一個結點;
第十二行調print函數輸出鏈表;
第十四行調malloc函數分配一個結點的內存空間, 并把其地址賦予pnum;
第十五行輸入待插入結點的數據域值;
第十六行調insert函數插入pnum所指的結點;
第十七行再次調print函數輸出鏈表。
從運行結果看,首先建立起3個結點的鏈表,并輸出其值;再刪103號結點,只剩下105,108號結點;又輸入106號結點數據, 插入后鏈表中的結點為105,106,108。聯合“聯合”也是一種構造類型的數據結構。 在一個“聯合”內可以定義多種不同的數據類型, 一個被說明為該“聯合”類型的變量中,允許裝入該“聯合”所定義的任何一種數據。 這在前面的各種數據類型中都是辦不到的。例如, 定義為整型的變量只能裝入整型數據,定義為實型的變量只能賦予實型數據。
在實際問題中有很多這樣的例子。 例如在學校的教師和學生中填寫以下表格: 姓 名 年 齡 職 業 單位 “職業”一項可分為“教師”和“學生”兩類。 對“單位”一項學生應填入班級編號,教師應填入某系某教研室。 班級可用整型量表示,教研室只能用字符類型。 要求把這兩種類型不同的數據都填入“單位”這個變量中, 就必須把“單位”定義為包含整型和字符型數組這兩種類型的“聯合”。
“聯合”與“結構”有一些相似之處。但兩者有本質上的不同。在結構中各成員有各自的內存空間, 一個結構變量的總長度應該是各成員中長度最長的那個和總元素的積。而在“聯合”中,各成員共享一段內存空間, 一個聯合變量的長度等于各成員中最長的長度。應該說明的是, 這里所謂的共享不是指把多個成員同時裝入一個聯合變量內, 而是指該聯合變量可被賦予任一成員值,但每次只能賦一種值, 賦入新值則沖去舊值。如前面介紹的“單位”變量, 如定義為一個可裝入“班級”或“教研室”的聯合后,就允許賦予整型值(班級)或字符串(教研室)。要么賦予整型值,要么賦予字符串,不能把兩者同時賦予它。聯合類型的定義和聯合變量的說明一個聯合類型必須經過定義之后, 才能把變量說明為該聯合類型。

轉載于:https://www.cnblogs.com/Jezze/archive/2011/12/23/2299594.html

總結

以上是生活随笔為你收集整理的C语言中的结构体,联合,链表和枚举,位域(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

99热在线免费观看 | 99精品国产成人一区二区 | 特及黄色片 | 毛片视频网址 | 在线黄色av电影 | 99久久www | 久精品在线 | 日本黄色免费在线 | 免费在线精品视频 | 中文字幕精品三级久久久 | 娇妻呻吟一区二区三区 | 免费麻豆| 国产成人不卡 | 久久久久久国产精品美女 | 在线观看视频色 | 在线中文字幕观看 | 亚洲黄色在线观看 | 国产日产欧美在线观看 | 国产精品美女久久久久久 | 欧美日韩在线免费观看 | 黄网站色 | 国产精品久久久久久久妇 | 久久免费视频一区 | 成年人免费在线观看 | 在线亚洲播放 | 婷婷激情久久 | 人人澡超碰碰97碰碰碰软件 | 黄色成人av | 在线观看中文字幕视频 | 色多多视频在线观看 | 国产精品一区二区三区在线播放 | 丁香六月婷婷激情 | 国产精品毛片一区视频播不卡 | 亚洲观看黄色网 | 亚洲精品在线一区二区三区 | 国产亚洲精品久久久久久久久久久久 | 久久色在线播放 | 夜夜骑日日操 | 久草免费福利在线观看 | 成人免费看片网址 | 99精品免费久久久久久久久日本 | 亚洲免费精品一区二区 | 亚洲免费一级 | 中文字幕乱在线伦视频中文字幕乱码在线 | 日日夜夜中文字幕 | 日韩欧美在线一区二区 | 亚洲国产中文字幕在线 | 国产九九九视频 | 精品在线观 | 成人超碰在线 | 丁香六月婷婷 | 91探花在线| 在线观看亚洲成人 | 波多野结衣精品在线 | 日韩激情小视频 | 欧美午夜视频在线 | a资源在线| 亚洲精品女人久久久 | 婷婷网站天天婷婷网站 | 欧美一级在线观看视频 | 在线免费观看的av网站 | 国内精品在线看 | 日韩成人免费在线电影 | 欧美a免费| 99视频国产精品免费观看 | 激情 婷婷| 午夜12点 | 麻豆视频免费在线 | 麻豆成人精品 | 91九色性视频 | 麻豆影视在线免费观看 | 国产一区观看 | 久久久影院一区二区三区 | 亚洲年轻女教师毛茸茸 | a爱爱视频| 日韩精品一区不卡 | 精品一区精品二区高清 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 最新av免费 | 日韩欧美一区二区三区在线 | 91av影视 | 91精品国产91久久久久福利 | 一区二区三区在线播放 | 美女精品在线观看 | 视频99爱| 午夜三级福利 | 韩国三级一区 | 免费观看mv大片高清 | 涩涩在线 | 国产午夜激情视频 | 亚洲永久av | 国产一区视频导航 | 亚洲精品乱码久久久久久 | 天天色中文 | 最新日韩视频在线观看 | 精品一二三区视频 | 日韩精品免费在线视频 | 色综合天天狠狠 | 91中文字幕在线视频 | 欧美日韩视频在线播放 | 在线观看日韩免费视频 | 一区二区视 | 欧美网址在线观看 | 国产精品免费久久久久久 | 日韩大片在线免费观看 | 天天色天天色天天色 | 超碰人人在 | 日韩成人免费在线观看 | 久久天天躁 | 97超碰在线资源 | 可以免费观看的av片 | 九九九电影免费看 | 精品91久久久久 | 美女视频永久黄网站免费观看国产 | 一区二区三区www | 天天天在线综合网 | 奇米四色影狠狠爱7777 | 91香蕉视频好色先生 | 亚洲91视频 | 天天曰天天曰 | 亚洲香蕉在线观看 | 国产精品视频永久免费播放 | 日韩午夜大片 | 超碰在线人人艹 | 亚洲国内精品视频 | 日韩精品免费在线观看 | 国产成人精品午夜在线播放 | 热re99久久精品国产66热 | 久久99热国产 | 亚州国产精品久久久 | 日韩中文在线观看 | 久久久久久久久福利 | 天天操夜夜拍 | 六月丁香色婷婷 | 国产亚洲va综合人人澡精品 | 狠狠色伊人亚洲综合网站色 | 久久全国免费视频 | 成人免费看电影 | 天天干.com | 国产亚洲欧美精品久久久久久 | www.黄色小说.com | 香蕉视频在线播放 | 成人在线一区二区三区 | 日本精品中文字幕在线观看 | 亚洲精品高清视频在线观看 | 久久精品久久精品久久精品 | 一级黄色片在线免费看 | 一区二区三区手机在线观看 | 97超级碰碰碰碰久久久久 | 亚洲精品欧美精品 | 久久精品久久综合 | 综合网伊人 | 成人黄色av免费在线观看 | 在线观看蜜桃视频 | 国产精品久久久久久影院 | 国产成人精品午夜在线播放 | 久久综合一本 | 日韩69视频| 国产一区二区三区在线免费观看 | 草久在线视频 | 激情小说久久 | 99这里只有 | 成人va天堂 | 国产精品福利在线 | 久久综合色天天久久综合图片 | 国产一级视频 | av片无限看| 国产精品日韩欧美 | 成人啊 v | 麻豆果冻剧传媒在线播放 | 操操操操网 | 色综合网在线 | 在线视频91| 日韩精品欧美专区 | 激情五月激情综合网 | 成 人 黄 色 免费播放 | 97国产在线观看 | 国内精品久久久久影院一蜜桃 | 日日日爽爽爽 | 国产蜜臀av| 91精品国产自产在线观看 | 99久久久国产精品免费99 | 在线国产不卡 | 欧美成人在线网站 | 高清一区二区三区av | 黄色av电影在线 | 久久电影色 | 久久艹影院 | 国内一级片在线观看 | 五月激情五月激情 | 伊人中文网 | 欧美大香线蕉线伊人久久 | 亚洲欧美视频在线播放 | 国产亚洲激情视频在线 | 久热久草在线 | 欧美日韩在线视频观看 | 婷婷久久五月天 | 视频91| 久久久国产一区二区三区 | 亚洲天天看 | 久久国产日韩 | 亚洲精品成人 | 午夜影院一级片 | 久久久久夜色 | 日本三级中文字幕在线观看 | 在线你懂 | 精品久久久久久国产91 | 国产成人久久精品亚洲 | 久久99国产精品久久 | 91精品久久久久久久久久入口 | 最近乱久中文字幕 | 91色一区二区三区 | 国产精品自产拍在线观看 | 成人在线播放免费观看 | 69中文字幕 | 九九九热精品 | 国产一区二区三区四区大秀 | 天天色棕合合合合合合 | 日韩欧美在线视频一区二区三区 | 国产精品美女毛片真酒店 | 久久a国产 | 五月天亚洲综合 | 亚洲网站在线看 | 四川bbb搡bbb爽爽视频 | 国产精品久久久久久久av电影 | 丁香婷婷在线观看 | 在线v片免费观看视频 | 久久久99精品免费观看app | 久久国内精品视频 | 欧洲色吧 | 在线三级av | 99精品观看 | 国产99在线免费 | 黄色影院在线观看 | 99re中文字幕 | 国产中文字幕久久 | 国产精品h在线观看 | 九九久久久久久久久激情 | 亚洲精品国产精品国自 | 国产黄色片免费 | 成人在线免费小视频 | 久久国产影院 | 91成人国产 | 国产一级二级视频 | 久久成人国产 | 麻豆传媒在线免费看 | 天天色天天射天天综合网 | 国产精品私拍 | 国产精品久久久久av | 中文字幕高清在线 | 亚洲成av人片在线观看 | 日批在线看 | 激情xxxx | 不卡视频一区二区三区 | 国产最新在线观看 | 中文字幕一区二区三区精华液 | 免费看国产曰批40分钟 | 福利网址在线观看 | 免费又黄又爽视频 | 黄色片网站 | 欧美精品久久天天躁 | 91久草视频 | 欧美国产日韩在线视频 | 69人人| 黄色毛片视频 | 精品不卡视频 | 美女网站久久 | 天天爱天天操天天干 | 午夜91在线 | 成人国产精品久久久春色 | www看片网站| 国产高清视频色在线www | 99精品视频一区 | 亚洲永久精品在线 | 国产精品手机在线观看 | 97狠狠干| www国产一区 | 国内久久久久久 | 伊人久久一区 | 四虎国产免费 | 久草在线最新免费 | 国产最新精品视频 | 黄色大片日本 | 91精品久久久久久 | 日韩精品免费专区 | 国产成人av在线影院 | 日本免费一二三区 | 亚洲国产手机在线 | 国产一级二级视频 | 色老板在线视频 | 黄色小网站免费看 | 九九综合九九综合 | 黄色片免费电影 | 亚洲欧美综合 | 国产在线一线 | 欧美日韩免费在线观看视频 | 国产精品久久中文字幕 | 亚洲精品视频免费在线 | 久久久久久久久免费 | 免费在线观看av网址 | 欧美一级看片 | 激情文学综合丁香 | 国产精品一区二区av麻豆 | 国产精品自产拍在线观看蜜 | 最近日本韩国中文字幕 | 色婷婷狠狠五月综合天色拍 | 国产精品一区二区三区视频免费 | 青青草久草在线 | 97色视频在线 | 精品在线观看国产 | 国产精品乱码一区二区视频 | 国产一区成人 | 亚洲黄色一级视频 | 国产亚洲在线观看 | 在线黄色国产电影 | 国内精品久久久久久久久 | 激情影音 | 色婷婷亚洲| 中文字幕在线免费观看视频 | 在线视频99 | 一区二区三区国产精品 | 91av超碰| 婷婷av电影 | 中文字幕免费在线看 | 中文字幕在线观看播放 | 成人久久毛片 | 99久久日韩精品免费热麻豆美女 | 天天精品视频 | 婷婷四房综合激情五月 | 久久久久免费看 | 国产精品18久久久久久vr | 欧美了一区在线观看 | 99re8这里有精品热视频免费 | 天天色天天艹 | 国产成人精品av在线 | 91福利在线观看 | 五月婷婷一级片 | 欧美福利视频 | 欧美精品久久天天躁 | 探花视频网站 | 亚洲国产剧情av | 伊人va| 首页中文字幕 | 五月婷婷在线观看 | 黄色片毛片 | 久草视频网 | 国产亲近乱来精品 | 亚洲国产网站 | 久久成年人 | 欧美一级日韩免费不卡 | 日韩在线小视频 | av黄色一级片| 亚洲国产欧美在线人成大黄瓜 | 欧美日韩精品二区第二页 | 欧美日韩在线免费观看视频 | 99视频在线播放 | 欧美久久久一区二区三区 | 午夜精品福利一区二区三区蜜桃 | 久久99久久久久 | 久久久久美女 | 最近中文字幕大全中文字幕免费 | 国产精品手机在线 | 成人wwwxxx视频| 国产亚洲精品久久久久久久久久 | 国产一区二区在线视频观看 | 91av视频在线观看免费 | 久久99久久久久久 | 三级动图 | 国产一区国产精品 | 婷婷色综合色 | 精品久久久久久亚洲综合网站 | 久久婷婷精品 | 国产明星视频三级a三级点| 久草在线免费在线观看 | 欧美日韩精品久久久 | 欧美一级片在线免费观看 | 美女黄视频免费看 | 免费看的国产视频网站 | 精品一区电影 | 成人在线观看资源 | 日韩一区二区三区免费视频 | 97自拍超碰 | 色综合久久久久综合体桃花网 | 国产成人精品一区二区三区在线观看 | 综合激情 | 久久精品草 | 亚洲一级国产 | 午夜视频亚洲 | 欧美午夜激情网 | 精品在线亚洲视频 | 2020天天干夜夜爽 | 99久久激情视频 | 精品久久久久久久久久久久久 | 99在线看 | 亚洲精品在线观看网站 | 国产日本亚洲 | 久久视频 | av福利在线免费观看 | 午夜国产福利在线 | 色婷婷免费视频 | 欧美一级淫片videoshd | 韩国在线视频一区 | 五月婷婷影院 | 国产在线观看 | 国产成人精品999在线观看 | 午夜精品一区二区三区视频免费看 | 激情 婷婷 | 国产一二区精品 | 久久久久久久久久久久国产精品 | 中文在线| 精品在线观看免费 | 在线观看国产区 | 九九热99视频| 欧美一区二区三区特黄 | 久99热| 免费看一级特黄a大片 | 激情狠狠干| 国产精品福利无圣光在线一区 | 久久精品麻豆 | 中文字幕免费在线看 | 久久久久久久久久久国产精品 | 美女视频黄,久久 | 91成人亚洲 | 黄色a一级片 | 日韩激情第一页 | 国产精品婷婷午夜在线观看 | 青青射| 99久久久精品 | 久草视频手机在线 | 国产精品久久一区二区无卡 | 日日夜夜狠狠干 | 在线观看黄色的网站 | 欧美色图p| 网站免费黄 | 欧美美女一级片 | 国内精品久久久久久久影视麻豆 | 天天射夜夜爽 | 粉嫩高清一区二区三区 | 国产高清不卡 | av字幕在线 | 日日日日干| 又紧又大又爽精品一区二区 | 国产韩国精品一区二区三区 | 99久久www| 91黄色视屏 | 亚洲国产97在线精品一区 | 免费看黄的视频 | 黄色动态图xx | 夜夜嗨av色一区二区不卡 | 色综合天天色综合 | 国色天香永久免费 | 久草热久草视频 | 久久久久久久久久网 | 久久视讯 | 国产精品久久99综合免费观看尤物 | 成人在线视频在线观看 | 久久免费视频在线观看 | 久久激情五月丁香伊人 | 91在线观看欧美日韩 | 亚洲在线资源 | 色婷婷综合在线 | 国产一区成人 | 在线播放日韩av | 日韩色视频在线观看 | 黄色软件网站在线观看 | 欧美污在线观看 | 99在线免费观看视频 | 中文字幕精品www乱入免费视频 | 欧美污污视频 | 国产午夜精品福利视频 | 缴情综合网五月天 | 久久久久二区 | 91精品免费在线视频 | www欧美日韩| 最新婷婷色 | 中文在线| av成人免费 | 午夜少妇| 一级片免费观看 | 亚洲欧美日韩一级 | 九九九热精品免费视频观看网站 | 激情五月伊人 | av在线专区 | 一区二区三区在线观看免费视频 | 精品美女视频 | 国产成人精品一区二区三区 | 欧美国产三区 | 久久久久亚洲精品 | 国产视频亚洲精品 | 激情综合婷婷 | 四季av综合网站 | 日韩伦理片一区二区三区 | 综合五月| 超碰97人人在线 | 色a网 | 国产精品久久久久久久午夜 | 久久激情视频免费观看 | 视频福利在线观看 | 婷婷丁香激情五月 | 中文字幕 二区 | 国产在线播放观看 | 国产小视频在线观看免费 | 国产精品久久久久久久久久久久 | 狠狠的操狠狠的干 | 亚洲久草在线视频 | 伊人天天| 日韩精品不卡在线 | 91视频观看免费 | 色五月成人 | 欧美一级免费 | 国产精品视频在线看 | 一级欧美黄 | 亚洲国产成人在线观看 | 色视频在线免费观看 | 精品亚洲免费视频 | 久久开心激情 | 91av在线精品 | 国产手机精品视频 | 超碰人人做 | 中文字幕日韩伦理 | 国产一级特黄毛片在线毛片 | 激情婷婷 | 91九色九色| 国产精品自在欧美一区 | 久久久久国产成人免费精品免费 | 午夜免费久久看 | 99久久精品国产免费看不卡 | free,性欧美 九九交易行官网 | 久久久久www | 黄色三级免费片 | 视频91 | 久久免费观看少妇a级毛片 久久久久成人免费 | 日本久久影视 | 免费a级毛片在线看 | 久久国产露脸精品国产 | 三级视频片 | 久久国产热视频 | 久久国产网 | 久久综合久色欧美综合狠狠 | 在线 你懂| 免费在线观看成年人视频 | 中文字幕在线观看第三页 | 中文字幕在线观看不卡 | 国产成在线观看免费视频 | 亚洲精品综合一区二区 | 日韩av高潮 | 国内一级片在线观看 | 蜜臀av麻豆| 欧美巨乳波霸 | 国产精品久久99综合免费观看尤物 | 超碰97免费观看 | 五月婷婷开心中文字幕 | 成人免费观看网站 | 国产成人在线网站 | 成人9ⅰ免费影视网站 | 日韩精品中文字幕有码 | 欧美一区日韩一区 | 一区二区三区中文字幕在线 | 欧美精品久久久久久久久久丰满 | 成人午夜影院在线观看 | 国产精品国产三级国产aⅴ无密码 | 亚洲男男gaygay无套同网址 | 国产在线国偷精品产拍免费yy | www.久久久精品 | 99婷婷| 日本精品久久久久中文字幕 | 精品国产乱码久久 | 五月丁婷婷 | 国产在线不卡视频 | 精品国产一区二区三区久久久 | 日韩视频一区二区三区在线播放免费观看 | 欧美一区二区在线刺激视频 | 91在线观看高清 | 天天操天天射天天操 | 国产资源中文字幕 | 国内精品久久久久久久影视简单 | 色婷婷88av视频一二三区 | 91精品在线看 | 黄色软件在线观看视频 | 国产精品岛国久久久久久久久红粉 | 亚洲黄色免费在线看 | 免费黄色小网站 | 亚洲一区网站 | 亚洲综合射 | 成人中文字幕+乱码+中文字幕 | 久草精品视频 | 亚欧日韩成人h片 | 99久久精品国产网站 | 99久久精品一区二区成人 | 在线a视频 | 亚洲va欧美va人人爽 | 精品亚洲国产视频 | 一区二区精品在线视频 | 2019中文在线观看 | 91精品一区二区在线观看 | 69av在线视频 | 亚洲国产手机在线 | 九九精品毛片 | www夜夜操com | 九九免费在线观看视频 | 色综合天天天天做夜夜夜夜做 | 国模精品在线 | 高清色免费 | 91亚洲激情| 国产免费午夜 | 成人免费在线看片 | 国产一区免费观看 | 在线免费视 | 00av视频 | 国产一区视频在线 | 日本中文不卡 | 国产在线久草 | 美女免费网站 | 五月婷丁香 | 欧美a级一区二区 | 日韩欧三级 | 99久久日韩精品免费热麻豆美女 | 精品一二三区视频 | 国产无套精品久久久久久 | 91av电影在线观看 | 久久免费毛片视频 | 超碰人人av | 一级免费黄视频 | 国产精品久久久久久久久久久久午夜片 | 久久久久久久久艹 | 久久久国产一区二区 | 精品美女视频 | 日韩 在线a | 国产在线观看91 | 毛片二区 | 日本午夜免费福利视频 | 91精品国产自产在线观看 | 九草在线视频 | 国产精品激情偷乱一区二区∴ | 午夜色婷婷 | 日本精品一区二区三区在线播放视频 | 色亚洲激情 | 在线免费看片 | 日韩午夜电影院 | 国产精品久久久久四虎 | 日日夜夜天天操 | 国产精品视频免费 | 日韩毛片一区 | 免费日韩三级 | 日本在线观看一区 | 欧美巨乳波霸 | 久久综合九色99 | 97视频免费播放 | 日韩精品不卡 | 91黄色免费看 | av国产网站 | 这里只有精品视频在线 | 亚洲一级片在线观看 | 色网站在线看 | 999久久国精品免费观看网站 | 亚洲最新精品 | www麻豆视频 | 欧美aa一级片 | av一区二区三区在线观看 | 综合色狠狠 | 国产亚洲视频在线观看 | 色之综合网 | 免费色视频网址 | 国产精品九九久久99视频 | 久久久国产一区二区三区四区小说 | 亚洲 欧美 国产 va在线影院 | 亚洲涩涩涩涩涩涩 | 91热视频在线观看 | 久久经典国产视频 | 992tv在线观看网站 | 97超碰影视 | 美女国产精品 | 丁香六月天 | 国产精品久久久久久久久久久杏吧 | 久久三级毛片 | 狠狠狠色丁香婷婷综合久久五月 | 久久久久五月天 | 色综合久久88色综合天天免费 | 欧美在线1区| 国产黄色视| 日韩一区二区免费在线观看 | 麻豆视频国产在线观看 | 成全在线视频免费观看 | 91亚洲精品久久久蜜桃网站 | 四虎国产精品免费观看视频优播 | 99色资源 | 国产中文在线播放 | 欧美精品在线观看 | 成人av日韩 | 国产精品网红福利 | 手机av电影在线观看 | 国产精品 日本 | 国产精品国产三级国产aⅴ无密码 | 日韩视频免费在线 | 日韩乱理 | 成人高清在线 | 免费视频国产 | av免费在线播放 | www亚洲国产 | 麻豆成人精品 | 91大神电影| 色干综合 | 亚洲国产精品资源 | 婷婷六月综合网 | 国产精品一区二区av麻豆 | 人人干在线 | 国产精品久久久久久欧美 | 99久久久久| 日日夜夜国产 | 99高清视频有精品视频 | 一区二区视频在线看 | 亚洲精品字幕在线观看 | 久草免费在线视频观看 | 在线视频日韩精品 | 欧美一级免费高清 | 日韩精品在线免费播放 | 大型av综合网站 | 97超碰总站 | 最近中文字幕国语免费av | 香蕉色综合| 国产美女视频免费观看的网站 | 久久久网站 | 91九色视频国产 | 成人小视频在线观看免费 | 国产69久久精品成人看 | 中文字幕av免费在线观看 | 毛片网站观看 | 免费观看完整版无人区 | 色全色在线资源网 | 国产精品第一页在线 | 少妇bbr搡bbb搡bbb | 日韩黄色在线电影 | 亚洲男女精品 | 国产精品福利午夜在线观看 | 亚洲午夜精品一区二区三区电影院 | 麻豆视频www| 国产亚洲免费的视频看 | 久草在线综合 | 天天操天天爽天天干 | 国产精品久久久久久久久久妇女 | 视频国产在线观看18 | 久久久www成人免费精品张筱雨 | 亚洲在线观看av | 狠狠色丁香婷婷综合 | 国产一区二区网址 | 高清av免费一区中文字幕 | 久热免费在线观看 | 激情综合国产 | 久久精品一区二区三区国产主播 | 久久精品三级 | 三级黄色片子 | 91亚洲欧美激情 | 日韩美精品视频 | www.在线观看视频 | 精品国产综合区久久久久久 | 免费观看成年人视频 | 欧美福利网站 | 国产精品大片在线观看 | 24小时日本在线www免费的 | 日本中文字幕高清 | 亚洲精品国产综合久久 | 97视频在线观看视频免费视频 | 国产精品久久久久久久av大片 | 伊人网av | 亚洲精品乱码久久久久久按摩 | 国产精品久久电影网 | 成人动漫精品一区二区 | 成人看片| 国产精品中文在线 | 亚洲国产精品500在线观看 | 91亚洲精品久久久蜜桃借种 | 国产一级一级国产 | 日韩无在线 | www.国产在线| 国产资源在线观看 | 免费看的黄网站 | wwwwww色| 97超碰总站 | 日韩精品免费在线播放 | 国产精品涩涩屋www在线观看 | 日韩经典一区二区三区 | 人人干狠狠干 | 中文字幕在线播放第一页 | 国产精品 中文在线 | 欧美日韩中文国产一区发布 | av电影免费观看 | 亚洲国产成人精品久久 | 伊色综合久久之综合久久 | 国产视频精品久久 | 亚洲天堂网在线观看视频 | 五月婷婷亚洲 | 成人小视频在线免费观看 | 日韩一级黄色大片 | 日本精品视频免费 | 久久国产欧美日韩精品 | 成人黄色在线看 | 成年人视频在线免费播放 | 99精品福利视频 | 在线视频a| 成人资源站 | 国产欧美中文字幕 | 天天干,狠狠干 | 麻豆一区在线观看 | 亚洲精品国偷自产在线91正片 | 国产精品成人一区二区三区 | 成人黄大片视频在线观看 | 黄色成年网站 | 人人爽人人爽人人片 | 欧美黑人性爽 | 欧美激情综合色综合啪啪五月 | 在线成人一区二区 | 麻豆传媒视频在线免费观看 | 在线免费观看国产视频 | 在线观看黄色国产 | 在线观看黄色免费视频 | 97视频入口免费观看 | 日韩午夜小视频 | 久久在现 | 日韩在线电影一区二区 | 国产日韩视频在线播放 | 九九在线播放 | 97电影在线观看 | 亚洲h色精品 | 91福利视频一区 | 人人爽爽人人 | 色婷婷 亚洲 | 亚洲欧美在线观看视频 | 麻豆国产精品va在线观看不卡 | 色99导航| 久久免费毛片 | 中文区中文字幕免费看 | 九九视频一区 | 日韩精品视频在线免费观看 | 在线免费观看不卡av | 九九视频免费在线观看 | 丁香午夜| 欧美色一色 | 中文字幕在线看视频 | 久久精品日本啪啪涩涩 | 免费av网址大全 | 黄色av免费电影 | 特级西西444www大胆高清无视频 | 亚洲资源在线网 | 国产一级片一区二区三区 | 一二三区在线 | 日本精品一区二区 | 男女激情麻豆 | 久久精品美女 | 美女视频又黄又免费 | 伊人狠狠色 | 婷婷丁香国产 | 欧美成人亚洲成人 | 狠狠操天天射 | 久久激情视频 久久 | 久久艹艹| 91精品国产网站 | 欧美成人亚洲成人 | 欧美一区二区免费在线观看 | 国产亚洲精品xxoo | 国产一级特黄毛片在线毛片 | 亚洲精品色视频 | 国产精品一区在线观看 | 一区二区精品在线 | 国产黄色视| 一级片黄色片网站 | 国产原创av片 | 99久久精品国产一区二区成人 | 久久成年人网站 | 人人澡超碰碰97碰碰碰软件 | 免费国产一区二区视频 | 丝袜+亚洲+另类+欧美+变态 | 91麻豆精品国产自产在线游戏 | 中文字幕视频一区二区 | 欧美在线91| 97国产在线观看 | 国产色女人 | 97超碰国产精品 | 伊人国产视频 | 国产成人精品女人久久久 | 黄色一级大片在线免费看国产一 | 91亚色视频在线观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 91桃色在线播放 | 国产精品理论片在线播放 | 国产91九色视频 | 成人在线免费小视频 | 国产香蕉视频 | 精品999在线观看 | 91久久人澡人人添人人爽欧美 | 波多野结衣电影一区二区三区 | 在线探花 | 久久综合免费视频 | 日韩免费av网址 | 91在线视频免费播放 | 亚洲综合国产精品 | 久久精品一区二区三区国产主播 | 精品国产三级 | 在线久草视频 | 精品国产免费av | 91豆麻精品91久久久久久 | 国产午夜影院 | 婷婷在线观看视频 | 精品在线二区 | 天堂av官网| 国产又粗又长又硬免费视频 | 久久久久国产a免费观看rela | 国产一级在线免费观看 | av解说在线观看 | 日p视频在线观看 | 亚洲综合成人婷婷小说 | 国产五月婷 | 久久这里只有精品久久 | 国产精品麻豆免费版 | 精品国产亚洲在线 | 日韩高清网站 | 一区二区精品在线 | 97精品国自产拍在线观看 | 国产成人一区二区三区电影 | 97超碰资源网 | 日韩理论在线观看 | 六月激情婷婷 | 免费日韩 精品中文字幕视频在线 | 欧美日韩国产一区二区在线观看 | www.五月婷| 青青草国产精品 | 久久人人爽人人爽人人片av软件 | 九九热在线精品视频 | 久色网| 中文亚洲欧美日韩 | 亚洲成人资源在线 | 97精品在线 | 国产专区视频在线观看 | 久久99久久精品 | 玖玖在线观看视频 | 99在线精品视频观看 | 国产原创91 | 免费久草视频 | 天天干天天操 | 国产精品久久久毛片 | 日韩小视频 | av网站在线免费观看 | 操夜夜操| 日韩视频一区二区 | 亚洲小视频在线观看 | 一区二区中文字幕在线观看 | 91中文在线观看 | 特级黄录像视频 | 久草视频在 | 国产手机视频在线播放 | 欧美精品中文在线免费观看 | 久久久久久久久久久久国产精品 | 婷婷激情av | 久草视频在线资源站 | 国产成人精品久久亚洲高清不卡 | 久草免费在线视频 | www黄在线| 狠狠色伊人亚洲综合网站野外 | 久久精品黄 | 欧美日韩在线观看视频 | 久久理论电影网 | 黄色小网站在线观看 | 男女精品久久 | 中文字幕有码在线 | 天天天天色射综合 | 一区二区三区免费在线观看视频 | 麻豆视频国产在线观看 | 免费国产在线精品 | 国产高清在线免费视频 | 亚洲蜜桃在线 | 丁香六月婷婷激情 | 深爱激情五月综合 | 黄色av一区二区 | 亚洲黄色免费电影 | 在线三级播放 | 成片视频在线观看 | 涩涩网站在线观看 | 亚洲日本三级 | 国产精品久久久久久麻豆一区 | 精品一区二区精品 | 久久精品久久久久电影 | 国产人成在线视频 | 在线免费精品视频 | 久久天| 一区二区三区四区五区在线 | 在线看v片| 色婷婷啪啪免费在线电影观看 | 亚洲精品三级 | 蜜臀av免费一区二区三区 | 婷婷色视频 | 友田真希av| 亚洲午夜精品一区二区三区电影院 | 国产女做a爱免费视频 | 久久久免费观看完整版 | 日韩一二三在线 | 人九九精品 | 天天干天天综合 | 又黄又爽又湿又无遮挡的在线视频 | 国产成人精品三级 |