华南俳烁实业有限公司

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

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

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

本函數(shù)有兩個形參均為指針變量,head指向鏈表,pi 指向被插結(jié)點。函數(shù)中首先判斷鏈表是否為空,為空則使
head指向被插結(jié)點。表若不空,則用 while語句循環(huán)查找插入位置。找到之后再判斷是否在第一結(jié)點之前插入,若是
則使head 指向被插結(jié)點被插結(jié)點指針域指向原第一結(jié)點,否則在其它位置插入, 若插入的結(jié)點大于表中所有結(jié)點,
則在表末插入。本函數(shù)返回一個指針,是鏈表的頭指針。 當插入的位置在第一個結(jié)點之前時,插入的新結(jié)點成為鏈
表的第一個結(jié)點,因此 head的值也有了改變, 故需要把這個指針返回主調(diào)函數(shù)。
[例 7.14]將以上建立鏈表,刪除結(jié)點,插入結(jié)點的函數(shù)組織在一起,再建一個輸出全部結(jié)點的函數(shù),然后用 main函
數(shù)調(diào)用它們。

#define NULL 0
#define TYPE struct stu
#define LEN sizeof(struct stu)
struct stu
{
int num;
int age;
struct stu *next;
};
TYPE * creat(int n)
{
struct stu *head,*pf,*pb;
int i;



for(i=0;i{
pb=(TYPE *)malloc(LEN);
printf("input Number and Age\n");
scanf("%d%d",&pb->num,&pb->age);
if(i==0)
pf=head=pb;
else pf->next=pb;
pb->next=NULL;
pf=pb;
}
return(head);
}
TYPE * delete(TYPE * head,int num)
{
TYPE *pf,*pb;
if(head==NULL)
{ printf("\nempty list!\n");
goto end;}
pb=head;
while (pb->num!=num && pb->next!=NULL)
{pf=pb;pb=pb->next;}
if(pb->num==num)
{ if(pb==head) head=pb->next;
else pf->next=pb->next;
printf("The node is deleted\n"); }
else
free(pb);
printf("The node not been found!\n");
end:
return head;
}
TYPE * insert(TYPE * head,TYPE * pi)
{
TYPE *pb ,*pf;
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;
else pf->next=pi;
pi->next=pb; }
else
{ pb->next=pi;
pi->next=NULL; }
}
return head;
}
void print(TYPE * head)
{
printf("Number\t\tAge\n");
while(head!=NULL)



{
printf("%d\t\t%d\n",head->num,head->age);
head=head->next;
}
}
main()
{
TYPE * head,*pnum;
int n,num;
printf("input number of node: ");
scanf("%d",&n);
head=creat(n);
print(head);
printf("Input the deleted number: ");
scanf("%d",&num);
head=delete(head,num);
print(head);
printf("Input the inserted number and age: ");
pnum=(TYPE *)malloc(LEN);
scanf("%d%d",&pnum->num,&pnum->age);
head=insert(head,pnum);
print(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í)照
寿宁县| 柳州市| 乌什县| 个旧市| 屯昌县| 禹城市| 朝阳区| 庆城县| 泌阳县| 乌拉特中旗| 平陆县| 吉木萨尔县| 定南县| 右玉县| 玉环县| 楚雄市| 宣化县| 江都市| 双峰县| 云梦县| 景德镇市| 蒙自县| 灵川县| 青阳县| 清丰县| 谷城县| 秦皇岛市| 沁水县| 衡阳市| 根河市| 利川市| 平湖市| 凌云县| 东海县| 兴山县| 望奎县| 洛宁县| 宾川县| 日土县| 开远市| 望谟县|