廣義表怎麼取表中間元素 雙鏈表的基本操作

2021-10-14 14:53:27 字數 2512 閱讀 7761

雙鏈表是在作業系統中常用的資料結構,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅,其結點組成如下:

其示意圖舉例如下:

1、雙鏈表結點定義:

/* 資料元素型別 */typedef int type;​/* 雙鏈表結點結構體 */typedef struct _dlistnodedlistnode;
2、相關操作示例

/* 函式宣告 */static dlistnode *dlist_create(void);static int dlist_find(dlistnode *dlist, type find_data);static dlistnode *dlist_change(dlistnode *dlist, int pos, type new_data);static dlistnode *dlist_insert(dlistnode *dlist, type insert_data, int pos);static dlistnode *dlist_delete(dlistnode *dlist, type del_data); static void dlist_print_int(dlistnode *dlist);
(1)建立乙個雙鏈表: (5,2,0,13,14)示意圖:

**:

static dlistnode *dlist_create(void)        return node;}
(2)元素查詢:

static int dlist_find(dlistnode *dlist, type find_data)        else            }        return error;}
(3)元素替換:

static dlistnode *dlist_change(dlistnode *dlist, int pos, type new_data)    temp->data = new_data;        return dlist;}
(4)結點插入:

static dlistnode *dlist_insert(dlistnode *dlist, type insert_data, int pos)        /* 頭部插入 */    if (1 == pos)        else            /* 中間插入 */        if (temp->next != null)                /* 尾部插入 */        else            }        return dlist;}
(5)結點刪除:

static dlistnode *dlist_delete(dlistnode *dlist, type del_data)        temp = temp->next;    }        return dlist;}
3、驗證主函式:

int main(void)    else            printf("把第1個位置的元素替換為2020得到新的雙鏈表為:");    dlist = dlist_change(dlist, 1, 2020);    dlist_print_int(dlist);        printf("第2個位置插入888得到新的雙鏈表為:");    dlist = dlist_insert(dlist, 888, 2);    dlist_print_int(dlist);        printf("刪除元素2得到新的雙鏈表為:");    dlist = dlist_delete(dlist, 2);    dlist_print_int(dlist);        return 0;}
執行結果:

廣義表怎麼取表中間元素 廣義表的有關知識點

概念 廣義表 lists,又稱列表 是一種非線性的資料結構,是線性表的一種推廣。即廣義表中放鬆對錶元素的原子限制,容許它們具有其自身結構。它被廣泛的應用於人工智慧等領域的表處理語言lisp語言中。在lisp語言中,廣義表是一種最基本的資料結構,就連lisp 語言的程式也表示為一系列的廣義表。定義 廣...

20200711 取鍊錶中間的元素

在xbox程式中有乙個redeem a code,意思為 輸入啟用碼 1 找到單向鍊錶中間那個元素,如果有兩個,則取前面的乙個。思路 掃瞄一遍得出長度,取出中間位置。typedef struct node node p為指向單鏈表的第乙個節點 node findmiddleelement node ...

鍊錶的實現 單鏈表 雙鏈表

鍊錶知識的引入 對於之前我們接觸到的陣列知識,要想儲存多個物件,首先想到的一定是物件陣列。但是陣列是乙個長度固定的線性結構,一旦內容不足或者過多,都會在成記憶體資源的浪費,由此引入鍊錶充分解決資源浪費問題。class node private屬性需要設定getter setter方法 public ...