很多时候我们想往一个数列或者字符串中插入一个数据,先提供一种数组的方法
#include<stdio.h>
int main(){
int a[10]={1,2,3,4,5};
int i,n,m;
printf("输出前的数组:\n");
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
scanf("%d %d",&n,&m);
printf("输出后的数组:\n");
for(i=9;i>n;i--){
a[i]=a[i-1];
}
a[n]=m;
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
}
其中n代表要插入的位置,及在第几个数组之后;m代表想要插入的数据 。
利用数组的插入数据的方法思想就是从某一位置开始,将数据往后移动,然后在指定的位置放入想插入的数据即可。
但是利用数组的方法过于麻烦,首先是数组必须固定,并且数组里的元素个数必须要足够多,否则在后移的时候会越界。其次就是当遇到很长的数据时,这种方法插入就会消耗大量的时间和运算空间。
接下来介绍链表的插入方法:
#include<stdio.h>
#include<stdlib.h>
struct cao{
int data;
struct cao *next;
};
int main(){
struct cao a1={1,NULL};
struct cao a2={2,NULL};
struct cao a3={3,NULL};
struct cao a4={4,NULL};
struct cao a0={0,NULL};
a1.next =&a2;
a2.next =&a3;
a3.next =&a4;
struct cao *p=&a1 ;
int n;
scanf("%d",&n);
a0.data=n;
a1.next=&a0;
a0.next=&a2;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
return 0;
}
这段代码时博主想在a1与a2之间插入一个数,如果想要自定义插入可以设置一个结构体数组来进行插入,链表的方法可以节省大量的运算时间,并且简单粗暴,只需要关联两个相邻的结构体即可。
了解链表的基础知识可以通过一下链接链表基础知识详解(非常详细简单易懂)_不秃也很强的博客-CSDN博客_链表
并且可以去观看b站上黑马程序员的视频