数据结构练习笔记——顺序表的插入
顺序表的插入
【问题描述】某顺序表中存放着若干整数,请根据上下文,将整数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;
}
记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。