我们在储存一大堆数的时候经常使用数组,可是数组有时候会不太灵活如:
有一列已经从小到大排好序的数字2 3 5 8 9 10 12.现在要插入6使得仍然是从小到大排列.
用数组则我们需要把8及其后面所有数字向后挪一位如下图一部分.
那么什么是链表呢?如下图二部分.三部分是链表中插入数的实现方法.
在C语言中用指针和动态内存分配函数malloc来实现.
链表由很多结点构成,而每一个结点都由俩部分构成,左边的部分用来存储数值,右边的存储下一个结点的地址
代码实现
#include#include//调用malloc函数用的头文件
struct ch
{int date ;
struct ch *next;//因为下一个结点类型也是struct ch所以指针类型也是这个
};//创造一个结构类型来表示结点
int main()
{struct ch *head,*p,*q,*t;//p,q临时指针用来输入创造链表,t用来输出,head头指针,指向链表的第一个结点
int i,n,a;//i,n用来循环输入,a用来暂时储存输入的数字
scanf("%d",&n);
head=NULL;//将头函数初始为空
for(i=0;iscanf("%d",&a);
p=(struct ch*)malloc(sizeof(struct ch));//将malloc类型强制转换并将p指向动态分配的内存空间地址
p->date=a;
p->next=NULL;//给这个结点赋值并将结点的指针部分初始为空
if(head==NULL){ head=p;//如果这是第一个结点就让头指针指向他
}else{ q->next=p;
}//如果不是就让上一个结点的指针指向他
q=p;
}//循环n次创造一个n个结点的链表
t=head;
while(t!=NULL){printf("%d ",t->date);
t=t->next;
}
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧