資料結構 鍊錶

2021-10-02 12:21:49 字數 3804 閱讀 4008

1)首先建立乙個單鏈表:從鍵盤讀入五個整數,按輸入順序形成單鏈表。將建立好的鍊錶元素依次輸出到螢幕上。

2)在已建立好的鍊錶中插入乙個元素:從鍵盤讀入元素值和插入位置,呼叫插入函式完成插入操作。然後將鍊錶元素依次輸出到螢幕上。

3)在已建立好的鍊錶中刪除乙個元素:從鍵盤讀入欲刪除的元素位置(序號),呼叫刪除函式完成刪除操作。然後將鍊錶元素依次輸出到螢幕上。

1)建立乙個單鏈表,其資料元素為整數,從鍵盤輸入,輸入0結束(注意0不放到鍊錶內);

2)從鍵盤任意輸入乙個整數,在單鏈表中查詢該數,如果單鏈表中已經存在這個數,就呼叫刪除函式,刪除該元素所在結點,並將單鏈表在刪除前後的資料元素依次輸出到螢幕上;

如果單鏈表中不存在這個數,就呼叫插入函式,將這個數插入到單鏈表尾,並將單鏈表在插入前後的資料元素依次輸出到螢幕上。

3)教材第一章習題第9題(用鍊錶實現)

1)刪除單鏈表中全部的負數

2)建立乙個雙向鍊錶,按照氣泡排序的思路對這個雙向鍊錶進行排序,列印排序結果。注意,本演算法在交換元素時是將鏈點整個交換而不是將鏈點中的元素值交換。

#include

#include

typedef

struct lnodelnode,

*listlink;

typedef

struct dlnodedlnode,

*dlistlink;

void

dlist_creat

(dlistlink &l)}}

intdlist_length

(dlistlink l)

return n;

}void

dlist_print

(dlistlink l)

//print the whole elem in dlist

printf

("\n");

}void

gulugulu

(dlistlink &l)

q=p->next;

a=p->pre;

b=p->next->next;

a->next=q;

q->pre=a;

q->next=p;

p->pre=q;

p->next=b;

b->pre=p;

}else

p=p->next;}}

}void

list_init

(listlink &l)

//init a new list

void

list_insertlast

(listlink &l,

int e) q=

(listlink)

malloc

(sizeof

(lnode));

q->data=e;

q->next=

null

; p->next=q;

}void

print

(listlink l)

//print the whole elem in list

printf

("\n");

}void

ldelete

(listlink &l,

int a)

// delete the elem in position"a"

p=p->next;

i++;}

if(flag==0)

printf

("fail");

}int

length

(listlink l)

//return the length of list

return n;

}void

insert

(listlink &l,

int a,

int e)

//insert a new elem"e" in position "a" of the list

if(i==a)

p=p->next;

i++;}

while

(p->next!=

null);

if(flag==0)

printf

("fail");

}int

find

(listlink l,

int e)

//find elem "e" in which position

p=p->next;

i++;}

if(flag==0)

else

return i;

}void

list_finddelete

(listlink &l,

int e)

p=p->next;}if

(flag==0)

if(flag==1)

}void

copy

(listlink &p,listlink &l)

}void

revers

(listlink &l)

p=(listlink)

malloc

(sizeof

(lnode));

p->next=s;

copy

(p,l);}

void

list_deletenegative

(listlink &l)

p=q;}}

void

main()

}print

(l);

printf

("請輸入插入的元素位置以及元素值空格分開\n");

scanf

("%d %d"

,&a,

&e);

insert

(l,a,e)

;print

(l);

printf

("請輸入需要刪除的元素位置\n");

scanf

("%d"

,&n)

;ldelete

(l,n)

;print

(l);

printf

("輸入乙個表內沒有的數字,會插入到表尾\n");

scanf

("%d"

,&e)

;list_finddelete

(l,e)

;print

(l);

printf

("輸入乙個表內有的數字,會刪掉他\n");

scanf

("%d"

,&e)

;list_finddelete

(l,e)

;print

(l);

printf

("以下的**會刪除表內的負數\n");

list_deletenegative

(l);

print

(l);

printf

("以下**為使用雙鏈表完成的氣泡排序\n");

//revers(l);

//print(l);

dlistlink l2;

dlist_creat

(l2)

;dlist_print

(l2)

;printf

("輸出降序\n");

gulugulu

(l2)

;dlist_print

(l2)

;}

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...