经典C语言代码——part 19(链表)

【程序72】

题目:创建一个链表。

1.程序分析:           

2.程序源代码:

/*creat 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;

int num,i;

ptr=(link)malloc(sizeof(node));

ptr=head;

printf("please input 5 numbers==>\n");

for(i=0;i<=4;i++)

{

scanf("%d",&num);

ptr->data=num;

ptr->next=(link)malloc(sizeof(node));

if(i==4) ptr->next=NULL;

else ptr=ptr->next;

}

ptr=head;

while(ptr!=NULL)

{ printf("The value is ==>%d\n",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;i<=4;i++)

{

scanf("%d",&num);

ptr->data=num;

head=(link)malloc(sizeof(node));

head->next=ptr;

ptr=head;

}

ptr=ptr->next;

while(ptr!=NULL)

{ printf("The value is ==>%d\n",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 (tmp==NULL) /*delete first node*/

return pointer->next;

else

{ if(tmp->next->next==NULL)/*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;i<num;i++)

{

tmp=pointer;

min=tmp->data;

btmp=NULL;

while(tmp->next)

{ if(min>tmp->next->data)

{min=tmp->next->data;

btmp=tmp;

}

tmp=tmp->next;

}

printf("\40: %d\n",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=array0;

tmp1=pointer;

for(i=1;i<num;i++)

{ tmp2=(link)malloc(sizeof(node));

tmp2->next=NULL;

tmp2->data=arrayi;

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);

}

==============================================================

相关推荐
晓蛋1 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
rockmelodies1 天前
# Windows Server2008 R2 Standard(SP1镜像U盘)重置本地管理员密码【完整详细步骤】
windows·密码破解
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿1 天前
重载、重写(覆盖)、重定义区别
c语言
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
phltxy1 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++
phltxy1 天前
C 语言中的数据存储:从类型到二进制位
c语言
霍霍的袁1 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio