資料結構 鍊錶的前插法與後插法

2021-08-30 21:53:21 字數 3351 閱讀 2135

在進行單鏈表的基本運算之前必須先建立單鏈表,建立單鏈表的常用方法有兩種:頭插法建表和尾插法建表

頭插法建表,從乙個空表開始,讀取字元陣列a中的字元,生成新節點,將讀取的資料存放到新節點的資料域中,然後將新節點插入到當前鍊錶的表頭上,直到讀完字元陣列a的所有元素為止。

頭插法建表雖然簡單,但生成的鍊錶中節點的次序和原陣列的次序相反,若希望兩者的次序一致,可採用尾插法建立

尾插法建表,該演算法是將新節點插到當前鍊錶的表尾上,為此必須增加乙個尾指標r,使其始終指向當前鍊錶的尾節點

#include

#include

typedef

int elemtype;

typedef

struct node node,

*linkedlist;

linkedlist linkedlistinit()

l->next =

null

;return l;

}linkedlist linkedlistcreath()

return l;

} linkedlist linkedlistinsert

(linkedlist l,

int i,elemtype x)

node *p;

p =(node *

)malloc

(sizeof

(node));

p->data = x;

p->next = pre->next;

pre->next = p;

return l;

} linkedlist linkedlistdelete

(linkedlist l,elemtype x)

pre->next = p->next;

free

(p);

return l;

}int

findder

(linkedlist l,

int x)

i++;}

return-1

;}linkedlist delete

(linkedlist l,

int st,

int en)

if( en == i )

i++;if

(!flag1 )

per = start;

}return l;

}int

main()

printf

("\n");

int i;

elemtype x;

printf

("請輸入插入資料的位置:");

scanf

("%d"

,&i)

;printf

("請輸入插入資料的值:");

scanf

("%d"

,&x)

;linkedlistinsert

(list,i,x)

;for

(start = list->next; start !=

null

; start = start->next)

printf

("\n");

printf

("請輸入要刪除的元素的值:");

scanf

("%d"

,&x)

;linkedlistdelete

(list,x)

;for

(start = list->next; start !=

null

; start = start->next)

printf

("\n");

return0;

}

#include

#include

typedef

int elemtype;

typedef

struct node node,

*linkedlist;

linkedlist linkedlistinit()

l->next =

null

;return l;

}void

linkedlistcreath

(linkedlist &list)

} linkedlist linkedlistinsert

(linkedlist l,

int i,elemtype x)

node *p;

p =(node *

)malloc

(sizeof

(node));

p->data = x;

p->next = pre->next;

pre->next = p;

return l;

} linkedlist linkedlistdelete

(linkedlist l,elemtype x)

pre->next = p->next;

free

(p);

return l;

}int

main()

printf

("\n");

int i;

elemtype x;

printf

("請輸入插入資料的位置:");

scanf

("%d"

,&i)

;printf

("請輸入插入資料的值:");

scanf

("%d"

,&x)

;linkedlistinsert

(list,i,x)

;for

(start = list->next; start !=

null

; start = start->next)

printf

("\n");

printf

("請輸入要刪除的元素的值:");

scanf

("%d"

,&x)

;linkedlistdelete

(list,x)

;for

(start = list->next; start !=

null

; start = start->next)

printf

("\n");

return0;

}

資料結構鍊錶 頭插法 尾插法 雙向鍊錶

我們最近學了資料結構鍊錶中的尾插法,頭插法,雙向鍊錶 鍊錶的步驟 1.申請乙個新的節點空間 2.給新的節點賦值資訊域 3.修改這個節點的指標域,將節點連線起來 尾插法 顧名思義就是從節點的尾部進行插入,首先申請乙個節點空間,給新的節點賦值資訊域,然後修改這個 節點的指標域,寫鍊錶首先要判斷頭節點是否...

資料結構 單鏈表前插法(頭插法)C

include using namespace std include define ok 1 define error 0 typedef int elemtype typedef int status 單鏈表的儲存結構 typedef struct lnodelnode,linklist 定義結...

資料結構 頭插法和尾插法

1.節點的定義 2.採用頭節點的好處 3.採用頭插法建立鍊錶 該方法從空表開始,生成新節點,並將讀取到的資料存放到新節點的資料域中,並將新節點插入到當前鍊錶的表頭,即頭節點之後。採用頭插法建立單鏈表時,讀入資料的順序與生成的鍊錶中的元素的順序是相反的。每個節點插入的時間為o 1 設單鏈表長為n,則總...