经典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=array[0];

tmp1=pointer;

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

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

tmp2->next=NULL;

tmp2->data=array[i];

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

}

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

相关推荐
算法如诗14 分钟前
**MATLAB R2025a** 环境下,基于 **双向时间卷积网络(BITCN)+ 双向长短期记忆网络(BiLSTM)** 的多特征分类预测完整实现
开发语言·网络·matlab
k093316 分钟前
在组件外(.js文件)中使用pinia的方法2--在http.js中使用pinia
开发语言·javascript·http
二川bro31 分钟前
第44节:物理引擎进阶:Bullet.js集成与高级物理模拟
开发语言·javascript·ecmascript
中文Python33 分钟前
小白中文Python-双色球LSTM模型出号程序
开发语言·人工智能·python·lstm·中文python·小白学python
yuuki23323334 分钟前
【数据结构】常见时间复杂度以及空间复杂度
c语言·数据结构·后端·算法
越努力越幸运50835 分钟前
JavaScript进阶篇垃圾回收、闭包、函数提升、剩余参数、展开运算符、对象解构
开发语言·javascript
czhc114007566335 分钟前
C# 1116 流程控制 常量
开发语言·c#
byte轻骑兵1 小时前
【安全函数】C语言安全字符串函数详解:告别缓冲区溢出的噩梦
c语言·安全·面试
程序定小飞1 小时前
基于springboot的汽车资讯网站开发与实现
java·开发语言·spring boot·后端·spring
百事牛科技1 小时前
PPT如何添加logo?两种方法解决!
windows·powerpoint