数据结构练习笔记——顺序表的插入

顺序表的插入

【问题描述】某顺序表中存放着若干整数,请根据上下文,将整数num插入到顺序表的第i个位置上。如果插入位置不对,输出"position error!",并终止程序的执行。
【输入形式】三行,第一行:顺序表中元素个数,第二行:顺序表中的数据元素;第三行:插入的元素和插入的位置以空格间隔
【输出形式】插入后的顺序表中的数据元素以空格间隔输出
【样例输入】
5
1 2 3 4 5
3 10
【样例输出】1 2 10 3 4 5

#include  <iostream>
#include  <cstdlib>
using  namespace  std;
struct  SqList {
	int  *elem;
	int  length;
	int  listsize;
};
void  initList(SqList  &L,int  n) {
	L.elem=(int  *)malloc(sizeof(int)*n);
	if(L.elem==NULL) {
		cout<<"overflow";
		exit(0);
	}
	L.length=0;
	L.listsize=n;
}
void  add(SqList&L,int  x) {
	if(L.length>=L.listsize) {
		int  *base;
		base=(int  *)realloc(L.elem,sizeof(int)*(L.listsize+10));
		if(base==NULL) {
			cout<<"overflow";
			exit(0);
		}
		L.elem=base;
		L.listsize+=10;
	}
	L.elem[L.length]=x;
	L.length++;
}
//---------------向第i个位置插入元素-----------------
void listInsert(SqList &L,int i,int num) {
	if(i<1||i>L.length+1) {
		cout<<"position error!";
		exit(0);
	}
	int *q=&(L.elem[i-1]);
	for(int* p=&(L.elem[L.length-1]); p>=q; p--)
		*(p+1)=*p;
	*q=num;
	L.length++;
}
//-----------------------------------------
void  printList(SqList  L) {
	for(int  i=0;  i<L.length;  i++) {
		cout<<L.elem[i]<<"  ";
	}
	cout<<"\n";
}
int  main() {
	SqList  L;
	int  n,num,i;
	int  e;
	cin>>n;
	initList(L,n);
	for(int  j=1;  j<=n;  j++) {
		cin>>e;
		add(L,e);
	}
	cin>>i>>num;
	listInsert(L,i,num);
	printList(L);
	return  0;
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

posted @ 2023-07-14 09:00  某zhuan  阅读(191)  评论(0)    收藏  举报