1. 程式人生 > 資訊 >北京排查整治超時加班:檢查物件包括重點突出網際網路企業等,持續兩個月

北京排查整治超時加班:檢查物件包括重點突出網際網路企業等,持續兩個月

一、雙向連結串列

(一)雙鏈表的結構定義

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
}

 (三)連結串列的總結比較