c语言经典一百例-第5章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
for(i=0;inext=(link)malloc(sizeof(node));
if(i4) ptr…》next=NULL;
else ptr=ptr…》next;
}
ptr=head;
while(ptr!=NULL)
{ printf(〃The value is 》%dn〃;ptr…》data);
ptr=ptr…》next;
}
}
…
【程序73】
题目:反向输出一个链表。
1。程序分析:
2。程序源代码:
/*reverse output a list*/
#include 〃stdlib。h〃
#include 〃stdio。h〃
struct list
{ int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
void main()
{ link ptr;head;tail;
int num;i;
tail=(link)malloc(sizeof(node));
tail…》next=NULL;
ptr=tail;
printf(〃nplease input 5 data》n〃);
for(i=0;idata=num;
head=(link)malloc(sizeof(node));
head…》next=ptr;
ptr=head;
}
ptr=ptr…》next;
while(ptr!=NULL)
{ printf(〃The value is 》%dn〃;ptr…》data);
ptr=ptr…》next;
}}
…
【程序74】
题目:连接两个链表。
1。程序分析:
2。程序源代码:
#include 〃stdlib。h〃
#include 〃stdio。h〃
struct list
{ int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
link delete_node(link pointer;link tmp)
{if (tmpNULL) /*delete first node*/
return pointer…》next;
else
{ if(tmp…》next…》nextNULL)/*delete last node*/
tmp…》next=NULL;
else /*delete the other node*/
tmp…》next=tmp…》next…》next;
return pointer;
}
}
void selection_sort(link pointer;int num)
{ link tmp;btmp;
int i;min;
for(i=0;idata;
btmp=NULL;
while(tmp…》next)
{ if(min》tmp…》next…》data)
{min=tmp…》next…》data;
btmp=tmp;
}
tmp=tmp…》next;
}
printf(〃40: %dn〃;min);
pointer=delete_node(pointer;btmp);
}
}
link create_list(int array'';int num)
{ link tmp1;tmp2;pointer;
int i;
pointer=(link)malloc(sizeof(node));
pointer…》data=array'0';
tmp1=pointer;
for(i=1;inext=NULL;
tmp2…》data=array;
tmp1…》next=tmp2;
tmp1=tmp1…》next;
}
return pointer;
}
link concatenate(link pointer1;link pointer2)
{ link tmp;
tmp=pointer1;
while(tmp…》next)
tmp=tmp…》next;
tmp…》next=pointer2;
return pointer1;
}
void main(void)
{ int arr1''={3;12;8;9;11};
link ptr;
ptr=create_list(arr1;5);
selection_sort(ptr;5);
}
…
【程序75】
题目:放松一下,算一道简单的题目。
1。程序分析:
2。程序源代码:
main()
{
int i;n;
for(i=1;i1)
break;
}
if(n%20)
{
printf(〃Even=〃);
sum=dcall(peven;n);
}
else
{
printf(〃Odd=〃);
sum=dcall(podd;n);
}
printf(〃%f〃;sum);
}
float peven(int n)
{
float s;
int i;
s=1;
for(i=2;i0) swap(str2;str3);
printf(〃after being sortedn〃);
printf(〃%sn%sn%sn〃;str1;str2;str3);
}
char swap(p1;p2)
char *p1;*p2;
{
char *p'20';
strcpy(p;p1);strcpy(p1;p2);strcpy(p2;p);
}
…
【程序80】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?
1。程序分析:
2。程序源代码:
main()
{int i;m;j;k;count;
for(i=4;i