创建一个顺序表,在第个()位置上插入新数据,并输出

先看运行结果:

1:线性表已满:

 2:正常情况:

 插入的数是999;

以下是代码部分:

(小白一枚,如果代码有问题,不喜勿喷。) 

#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define maxSize 10		//数组空间的大小,10个单元可以不放满。 
typedef struct sequenlist{
	int last;          //线性表满的时候,为last为9;代表了数组下标;
	int data[maxSize];
}sequenlist;
int ListInsert(sequenlist*L,int i,int e);		//链表的插入 
void creatlist(sequenlist*L);					//创建顺序表并初始化
void printOut(sequenlist*L); 
int main(){
	int i;				//插入位置(或者删除,因为作用域的关系,不同函数中,也可以表示删除等操作)的位置
	int e;              //插入的数据
	sequenlist *L;		//声明一个线性表
	L=(sequenlist*)malloc(sizeof(sequenlist));//结构体指针在使用前要初始化
	creatlist(L);
	printf("当前数组的最大长度为10\t\t\t请输入你要插入的位置");
	scanf("%d",&e);
	ListInsert(L,e,999);
	printf("\t\t\t\t\t插入数据后的线性表如下:\n");
	printOut(L);
	
//	L->last=L->last+1;
	getch();
	}
void creatlist(sequenlist*L){	//创建顺序表并初始化
	int i;	//因为作用域不同,所以可以在这里也用 i 表示数据的个数;
	int j;
	int temp;		//表示插入的数据
	printf("当前数组的最大长度为10\t\t\t请输入你想输入数据的个数:");
	scanf("%d",&i);
	for( j=0;j<i;j++){
		printf("data[%d]=",j);
		fflush(stdin);
		scanf("%d",&temp);
		L->data[j]=temp;
		}
		//别忘了写L-last;
		L->last=j-1;
		printf("\n");
}

int ListInsert(sequenlist*L,int i,int e){
	int j;	//此处用j代表要往后移动的元素下标。;因为插入的位置是用i(插入到第i个位置[下标为i-1;])代表的,
			//所以,用j来表示方便些;
	if(L->last==maxSize-1){			//if(L->last==maxSize-1)
	printf("\t\t\t当前线性表已满\n");
	return 0;		//函数有了return就不能写void ListInsert(sequenlist*L,int i,int e);
	}
	else if( (i<0) ||  (i>L->last) ){
	printf("\t\t\t插入位置错误\n");
	return 0;
	}	else{
		for(j=L->last;j>=i;j--){				//还没弄懂呢 
		L->data[j+1]=L->data[j];
//		L->data[i]=e;						//	教材上这段代码写在了这里		尽信书不如无书 
//		L->last=L->last+1;                  //下标+1;
		}
		L->data[i]=e;//写在外面,教材上没有写在这里,写在了上面第三行 
		return 1;
	}
}
void printOut(sequenlist*L){
	int i;
	for(i=0;i<L->last+2;i++){
		printf("data[%d]=%d " ,i,L->data[i]);// data[i],并不代表L-data[i]
		//L->last++;  //会无限循环。
	}
	L->last++;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值