首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
2.鏈數據的插入和刪除
對于一個已排序好的鏈表(假設是生序),現在想插入一個數據進去,可能有三種情況:
(1).比首項數據還小,即插入的數據作為首項出現:
這種情況我們的處理方法是:把該數據作為第一項,指針指向原先的首項即可。設原先首項為top,待插入的數據為in,則:
in->next=top;
即可讓該數據作為鏈表的頭。
(2).比最后一項大,即插入的數據作為最后一項出現:
這也很好辦,設原先最后一項為old,則:
old->next=in;
in->next=NULL;
(3).作為中間某一項出現:前面是old,后面是top,則:
old->next=in;
in->next=top;
如果想刪除一個數據,也可能是出現在開頭,中間和結尾。
例如想刪除in這個數據,它原先的前面是old,后面是top,即原先的鏈表是這樣:
old->next=in;
in->next=top;
現在刪除in,只需把old指向top即可:
old->next=top->next;
/*刪除節點函數*/
void delete(struct address *info,struct address *old)
{
if(info)
{
if(info==start) start=info->next; /*刪除的是第一個節點*/
else
{
old->next=info->next; /*被刪除節點前的指針指向下一個節點*/
last=old; /*若節點是鏈表尾,則該節點前的節點指針指向NULL*/
}
free(info); /*釋放刪除節點占用空間*/
}
}
/*查找鏈表中是否有該數據*/
struct address *search(struct address *top,char *n)
{
while(top)
{
if(!strcmp(n,top->name)) return top; /*找到要刪除的節點指針*/
top=top->next; /*繼續找*/
}
return NULL; /*沒有找到*/
}
/*鏈表的輸出*/
void display(struct address *top)
{
while(top)
{
printf(top->name);
top=top->next;
}
}
鏈表問題比較復雜,但又是很重要的概念。上面說的輸入,查找,刪除,插入等功能一定要理解,可以參考別的一些資料看看。
上面說的單鏈表,但是單鏈表有一個缺點,就是無法反向操作,當某一個鏈因破壞而斷裂,則整個鏈就被破壞而無法恢復。雙鏈表可以彌補這個缺點,所謂雙鏈表是指每個節點有兩個指針項,一個指針指向其前面的節點,而另一個指針指向后面的節點。關于雙鏈表的使用相對要復雜一些,這里就不介紹了,可以找其他一些資料看看。
相關推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |