#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...