資料結構之單鏈表的建立與操作 三

2021-09-26 04:45:04 字數 2797 閱讀 5372

#include

#include

//定義乙個結點

typedef

struct nodenode,

*pnode;

pnode createlist

(void);

//建立乙個鍊錶

void

showlist

(pnode phead)

;//展示鍊錶

bool isemptylist

(pnode phead)

;//鍊錶是否為空

intgetlistlenght

(pnode phead)

;//獲得鍊錶長度

bool insertlist

(pnode phead,

int location,

int value)

;//在phead鍊錶中的location位置插入value

bool deletelist

(pnode phead,

int location,

int* pvalue)

;void

sortlist

(pnode phead)

;int

main

(void

)pnode createlist

(void

)printf

("請輸入鍊錶長度:");

int length =0;

scanf

("%d"

,&length)

;

pnode ptail = phead;

//建立乙個pnode型別指標ptail,該指標永遠指向最後乙個結點

ptail->pnext =

null

;printf

("請輸入鍊錶結點資料域:");

for(

int i =

0; i)scanf

("%d",&

(pnode->data));

//對新結點的資料域賦值

pnode->pnext =

null

;//新的結點的指標域為null;

ptail->pnext = pnode;

ptail = pnode;

}return phead;

}void

showlist

(pnode phead)

printf

("\n");

}//鍊錶是否為空

bool isemptylist

(pnode phead)

else

}//獲得鍊錶長度

intgetlistlenght

(pnode phead)

return length;

}bool insertlist

(pnode phead,

int location,

int value)

if(location<

1|| location >

getlistlenght

(phead)+1

)

pnode pnew =

(pnode)

malloc

(sizeof

(node));

//新的結點if(

null

== pnew)

pnode pforwardlocation = phead;

//建立乙個指標,指向頭結點

for(

int i =

1; i)//pforwardlocation永遠指向要插入位置的前乙個位置的指標

pnew->data = value;

pnew->pnext = pforwardlocation->pnext;

pforwardlocation->pnext = pnew;

return true;

}bool deletelist

(pnode phead,

int location,

int* pvalue)

if(location<

1|| location >

getlistlenght

(phead)

)

pnode pforwardlocation = phead;

//建立乙個指標,指向頭結點

for(

int i =

1; i)//pforwardlocation永遠指向要刪除位置的前乙個位置的指標

pnode pdeletenode = pforwardlocation->pnext;

*pvalue = pdeletenode->data;

pforwardlocation->pnext = pdeletenode->pnext;

free

(pdeletenode)

;//需要把要刪除的元素釋放

return true;

}void

sortlist

(pnode phead)

pnode plocation = phead->pnext;

//建立乙個指標,指向首結點

for(

int i =

0; i<

getlistlenght

(phead)-1

; i++

) plocation = plocation->pnext;}}

}}

資料結構之單鏈表操作

編寫乙個程式,實現單鏈表的各種基本運算 假設單鏈表的元素型別為char 1 初始化單鏈表h 2 採用尾插法依次插入元素a,b,c,d,e 3 輸出單鏈表h 4 輸出單鏈表h長度 5 判斷單鏈表h是否為空 6 輸出單鏈表h的第3個元素 7 輸出元素a的位置 8 在第4個元素位置上插入元素f 9 輸出單...

資料結構 單鏈表建立

順序表是一組連續的儲存單元來依次儲存線性表中的結點,而鍊錶是用一組任意的儲存單元來存放線性表中的結點,這組儲存單元可不連續分布在記憶體中的任何位置上。因此,鍊錶中結點的邏輯順序與儲存順序不一定相同。為了體現各結點儲存單元之間的邏輯關係,再儲存每個結點的同時,還必須儲存與之聯絡的相鄰結點的位址資訊,這...

資料結構 單鏈表的建立

1 尾插法 1 不帶頭結點 typedef int elementtype typedef struct node list struct node list create return ptrl 2 帶頭結點 list create return ptrl 2 頭插法 1 不帶頭結點 list c...