华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場 | 考試論壇  
全國  |             |          |          |          |          |         
  當(dāng)前位置:計算機等級 > 二級考試 > C語言程序設(shè)計 > C語言輔導(dǎo) > 文章內(nèi)容
  

全國計算機等級考試二級C語言入門教程(110)

中華IT學(xué)院   【 】  [ 2016年5月11日 ]

函數(shù)有兩個形參,head為指向鏈表第一結(jié)點的指針變量,num刪結(jié)點的學(xué)號。 首先判斷鏈表是否為空,為空則不
可能有被刪結(jié)點。若不為空,則使 pb指針指向鏈表的第一個結(jié)點。進入while語句后逐個查找被刪結(jié)點。找到被刪結(jié)
點之后再看是否為第一結(jié)點,若是則使 head指向第二結(jié)點(即把第一結(jié)點從鏈中刪去),否則使被刪結(jié)點的前一結(jié)點(pf
所指)指向被刪結(jié)點的后一結(jié)點(被刪結(jié)點的指針域所指)。如若循環(huán)結(jié)束未找到要刪的結(jié)點, 則輸出“末找到”的提
示信息。最后返回 head值。

[例7.13]寫一個函數(shù),在鏈表中指定位置插入一個結(jié)點。在一個鏈表的指定位置插入結(jié)點, 要求鏈表本身必須是已
按某種規(guī)律排好序的。例如,在學(xué)生數(shù)據(jù)鏈表中, 要求學(xué)號順序插入一個結(jié)點。設(shè)被插結(jié)點的指針為pi?稍谌N
不同情況下插入。

1. 原表是空表,只需使head指向被插結(jié)點即可。見圖7.7(a)
2. 被插結(jié)點值最小,應(yīng)插入第一結(jié)點之前。這種情況下使head指向被插結(jié)點,被插結(jié)點的指針域指向原來的第一結(jié)
點則可。即:pi->next=pb;
head=pi; 見圖 7.7(b)
3. 在其它位置插入,見圖7.7(c)。這種情況下,使插入位置的前一結(jié)點的指針域指向被插結(jié)點,使被插結(jié)點的指針
域指向插入位置的后一結(jié)點。即為:pi->next=pb;pf->next=pi;
4. 在表末插入,見圖7.7(d)。這種情況下使原表末結(jié)點指針域指向被插結(jié)點,被插結(jié)點指針域置為NULL。即:
pb->next=pi;
pi->next=NULL; TYPE * insert(TYPE * head,TYPE *pi)
{
TYPE *pf,*pb;
pb=head;
if(head==NULL) /*空表插入*/
(head=pi;
pi->next=NULL;}
else
{
while((pi->num>pb->num)&&(pb->next!=NULL))
{pf=pb;
pb=pb->next; }/*找插入位置*/
if(pi->num<=pb->num)
{if(head==pb)head=pi;/*在第一結(jié)點之前插入*/
else pf->next=pi;/*在其它位置插入*/
pi->next=pb; }
else
{pb->next=pi;
pi->next=NULL;} /*在表末插入*/
}
return head;}

分享到:
本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營業(yè)執(zhí)照
临江市| 大新县| 彭山县| 济南市| 嘉兴市| 揭阳市| 江门市| 黎平县| 平阴县| 仙居县| 利辛县| 尖扎县| 祁门县| 水城县| 正阳县| 时尚| 绍兴市| 内丘县| 沂源县| 延庆县| 阜宁县| 民权县| 黔南| 东光县| 余干县| 金秀| 中卫市| 合作市| 梅河口市| 龙山县| 武冈市| 潼南县| 神农架林区| 阳高县| 客服| 桂阳县| 英吉沙县| 福安市| 西充县| 滦南县| 怀远县|