欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和雙向鏈表操作

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

數(shù)據(jù)結(jié)構(gòu)  雙向鏈表的實(shí)現(xiàn)

雙向鏈表中的每一個(gè)結(jié)點(diǎn)都含有兩個(gè)指針域,一個(gè)指針域存放其后繼結(jié)點(diǎn)的存儲(chǔ)地址,另一個(gè)指針域則存放其前驅(qū)結(jié)點(diǎn)的存儲(chǔ)地址。

雙向鏈表結(jié)點(diǎn)的類型描述:

//雙向鏈表的類型描述 
typedef int ElemType; 
typedef struct node{ 
 ElemType data; 
 struct node *prior,*next; 
}DuLNode,*DuLinkList; 
  

 其中,prior域存放的是其前驅(qū)結(jié)點(diǎn)的存儲(chǔ)地址,next域存放的是其后繼結(jié)點(diǎn)的存儲(chǔ)地址。

雙向鏈表有兩個(gè)特點(diǎn):

一是可以從兩個(gè)方向搜索某個(gè)結(jié)點(diǎn),這使得鏈表的某些操作(如插入和刪除)變得比較簡(jiǎn)單; 二是無(wú)論利用前鏈還是后鏈都可以遍歷整個(gè)雙向鏈表。

        雙向鏈表的操作基本和單鏈表的操作相同;

        1. 頭插法創(chuàng)建帶頭結(jié)點(diǎn)的雙向鏈表Create_DLinkListF(int n)

//頭插法創(chuàng)建帶頭結(jié)點(diǎn)的雙向鏈表 
DuLinkList Create_DLinkListF(int n){ 
 DuLinkList L,p; 
 int i = n - 1; 
 ElemType x; 
 //新建頭結(jié)點(diǎn) 
 L = (DuLinkList)malloc(sizeof(DuLNode)); 
 L->prior = NULL; 
 L->next = NULL; 
 
 //添加第一個(gè)結(jié)點(diǎn) 
 scanf("%d",&x); 
 p = (DuLinkList)malloc(sizeof(DuLNode)); 
 p->data = x; 
 L->next = p; 
 p->prior = L; 
 p->next = NULL; 
 
 //加入其他結(jié)點(diǎn) 
 while(i > 0){ 
 scanf("%d",&x); 
 p = (DuLinkList)malloc(sizeof(DuLNode)); 
 p->data = x; 
 
 p->next = L->next; 
 L->next->prior = p; 
 p->prior = L; 
 L->next = p; 
 
 i--; 
 } 
 return L; 
} 

         2. 尾插法創(chuàng)建帶頭結(jié)點(diǎn)的雙向鏈表Create_DLinkListR(int n)

//尾插法創(chuàng)建帶頭結(jié)點(diǎn)的雙向鏈表 
DuLinkList Create_DLinkListR(int n){ 
 DuLinkList L,p,lastNode; 
 int i = n - 1; 
 ElemType x; 
 //新建頭結(jié)點(diǎn) 
 L = (DuLinkList)malloc(sizeof(DuLNode)); 
 L->prior = NULL; 
 L->next = NULL; 
 
 //添加第一個(gè)結(jié)點(diǎn) 
 scanf("%d",&x); 
 p = (DuLinkList)malloc(sizeof(DuLNode)); 
 p->data = x; 
 L->next = p; 
 p->prior = L; 
 p->next = NULL; 
 
 lastNode = p; 
 //加入其他結(jié)點(diǎn) 
 while(i > 0){ 
 scanf("%d",&x); 
 p = (DuLinkList)malloc(sizeof(DuLNode)); 
 p->data = x; 
 
 lastNode->next = p; 
 p->prior = lastNode; 
 p->next = NULL; 
 
 lastNode = p; 
 i--; 
 
 } 
 return L; 
 
} 
    

3. 在指定結(jié)點(diǎn)之前插入新結(jié)點(diǎn)Insert_DLinkListBefore(DuLinkList p,ElemType x)

//在指定結(jié)點(diǎn)之前插入新結(jié)點(diǎn) 
void Insert_DLinkListBefore(DuLinkList p,ElemType x){ 
 DuLinkList newNode; 
 //判斷結(jié)點(diǎn)p之前的結(jié)點(diǎn)的合法性: 
 if(p->prior == NULL) 
 printf("結(jié)點(diǎn)不合法,不能在該結(jié)點(diǎn)之前插入結(jié)點(diǎn)\n"); 
 else{ 
 newNode = (DuLinkList)malloc(sizeof(DuLNode)); 
 newNode->data = x; 
 
 newNode->next = p; 
 p->prior->next = newNode; 
 newNode->prior = p->prior; 
 p->prior = newNode; 
 } 
} 

4. 在指定結(jié)點(diǎn)之后插入新結(jié)點(diǎn)Insert_DLinkListAfter(DuLinkList p,ElemType x)

//在指定結(jié)點(diǎn)之后插入新結(jié)點(diǎn) 
void Insert_DLinkListAfter(DuLinkList p,ElemType x){ 
 
 DuLinkList newNode; 
 newNode = (DuLinkList)malloc(sizeof(DuLNode)); 
 newNode->data = x; 
 
 //當(dāng)插入位置是最后一個(gè)結(jié)點(diǎn)之后時(shí) 
 if(p->next == NULL){ 
 p->next = newNode; 
 newNode->prior = p; 
 newNode->next = NULL; 
 } 
 else{ 
 newNode->next = p->next; 
 p->next->prior = newNode; 
 p->next = newNode; 
 newNode->prior = p; 
 } 
} 

5. 刪除指定結(jié)點(diǎn)Delete_DLinkList(DuLinkList p)

//刪除指定結(jié)點(diǎn) 
void Delete_DLinkList(DuLinkList p){ 
 //如果刪除的是最后一個(gè)元素 
 if(p->next == NULL) 
 p->prior->next = NULL; 
 
 else{ 
 p->prior->next = p->next; 
 p->next->prior = p->prior; 
 
 } 
 free(p); 
} 

6. 后鏈輸出雙向鏈表Print_DLinkListN(DuLinkList L)

//后鏈輸出雙向鏈表 
void Print_DLinkListN(DuLinkList p){ 
 
 while(p != NULL){ 
 printf("%d\t",p->data); 
 p = p->next; 
 } 
 printf("\n"); 
 
} 

  7.前鏈輸出雙向鏈表Print_DLinkListP(DuLinkList p)

//前鏈輸出雙向鏈表 
void Print_DLinkListP(DuLinkList p){ 
 
 while(p != NULL){ 
 printf("%d\t",p->data); 
 p = p-prior; 
 } 
 printf("\n"); 
} 
 

至于雙向鏈表的其他操作,如定位,和單鏈表的操作類同,不再贅述。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有