北京排查整治超時加班:檢查物件包括重點突出網際網路企業等,持續兩個月
阿新 • • 發佈:2022-03-15
一、雙向連結串列
(一)雙鏈表的結構定義
typedef struct DuLnode{ //宣告結點的型別和指向節點的指標型別
ElemType data //結點的資料域
struct Lnode *next,*prior //結點的指標域,分為後驅結點的地址和前驅結點的地址
}Lnode, *DuLinkList //LinkList 為指向結構體Lnode的指標型別
(二)雙鏈表的操作
1.雙鏈表的插入
// 在帶頭結點的雙向迴圈連結串列L中第i個位置之前插入元素e void ListInsert_Dul(DuLinkList &L, Int i, ElemType e) { if(!(p = GetElemP_Dul(L,i))) return ERROR s = new DulNode // 建立一個新的結點元素 s -> date = e // 儲存結點元素的資料域 s -> prior = p -> prior // 將i+1個位置的前驅(指向i)指向 賦值給 新結點的前驅指向 p -> prior -> next =s // 將i的後驅指向 新結點 s -> next = p // 將新結點的後驅 指向 i+1結點 p -> prior = s // 將i+1結點的前驅 指向 新結點 return OK }
2.雙鏈表的刪除操作
// 刪除在帶頭結點的雙向迴圈連結串列L中第i個位置 並用e返回 void ListDelete_Dul(DuLinkList &L, Int i, ElemType &e) { if(!(p = GetElemP_Dul(L,i))) return ERROR e= p -> data // 儲存刪除結點元素的資料域 p -> prior -> next = p -> next // 將刪除元素的後驅(指向i)指向 賦值給 i-1結點的後驅指向 p -> next -> prioe = p -> prior // 將刪除元素的前驅(指向i)指向 賦值給 i+1結點的前驅指向 free(p) // 清除結點空間 return OK }
(三)連結串列的總結比較