顺序表两元素之间的插入

顺序表动态两元素之间的插入

在这里插入图片描述
今天是3.7

#include<stdlib.h>
#include<stdio.h>

    struct node{
    	  int *elem;//创建指针
    	int length;

//长度

    };

/*一开始设的类型是node*,返回只怎么弄都不对。这是一个顺序表,不是链表,不需要返回地址,因为它的地址不改变。*/
int charu(node *l,int i,int j){	//l是指针,要指向
	if(i<0||i>l->length+1){   //判断范围,如果插入的范围不在1~length+1中就插不了
		return 0;
	}
	if(l->length>=10){		//如果原本的长度已经占满
		`int *newbase=(int *)realloc(l->elem,15*sizeof(int));*`	在这里插入代码片//使用realloc在开一个新的空间*
		`if(!newbase)`//这个空间没开好,没开好就是空,非空为真
		return 0;
		

    l->elem=newbase;//把原来的指针在指向开好的空间
    		l->length+=5;

//长度要记得加
	}
	  

  int *p,*q;
p=&(l->elem[l->length-1]);		//p是这个空间最后一个元素
q=&(l->elem[i-1]);

		/	/q是要插入的元素位置,位置-1是元素下标
		for(p;p>=q;p--){		/*顺序表中指针可减,连续的空间。插入就是把最后一个元素往后挪,再把前一个位置往后挪到以前最后一个位置,最后会在要插入的位置上空出来。*/
	
		*(p+1)=*p;//把前一个元素交给后一个元素,指针加*是它的值
	}
	*q=j;//把要插入的值给了要插入的位置
	l->length++;//长度要加1
	return 1;//对了就返回一
	
}
int main(void){
	node l;//创建一个结构体变量
	l.elem=(int *)malloc(10*sizeof(int));//给变量开辟10*4B个空间
	int i;
	for(i=0;i<5;i++){//赋值
		l.elem[i]=i+1;
	}
		printf("原始数据\n");
	for(i=0;i<5;i++){
		printf("%d\t",l.elem[i]);
	}
	printf("\n");
	charu(&l,2,123);//l是地址,要把地址传给函数,l要有变化。在第二个位置上插入123
		printf("插入后的数据\n");
	for(i=0;i<6;i++){
		printf("%d\t",l.elem[i]);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值