向量是由具有相同数据类型的数据元素组成的线性表。下面是用C++实现的向量的插入与删除,供参考。
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100 //const int MaxSize 100;
typedef int datatype; //datatype的类型可根据具体情况而定 ;
typedef struct{
datatype v[MaxSize]; //动态数组说明为datatype *V;
int n; //当前表长;
}seqList; //数组V[n]...V[MaxSize-1]作为备用数组;
seqList L;
//int i,j;
datatype x;
int seq_Insert(seqList &L, int i, datatype x);
int seq_Delete(seqList &L, int i);
int main()
{
L.n=20;
for(int i=0;i<L.n;i++)
L.v[i]=i+1;
x=100;
for(int i=0;i<L.n;i++)
printf("%d ",L.v[i]);
printf("\n");
seq_Insert(L,10,77);
for(int i=0;i<L.n;i++)
printf("%d ",L.v[i]);
printf("\n");
seq_Delete(L,10);
for(int i=0;i<L.n;i++)
printf("%d ",L.v[i]);
printf("\n");
system("pause");
return 0;
}
int seq_Insert(seqList &L, int i, datatype x)
{
int j;
if(i<0||i>L.n)
return 1; //position error
if(L.n>=MaxSize)
return 1; //overflow
for(j=L.n-1;j>=i;j--)
L.v[j+1]=L.v[j]; //后移;
L.v[i]=x; //插入 ;
L.n++; //修改表长;
return 0;
}
int seq_Delete(seqList &L, int i)
{
int j;
if(i<0||i>L.n)
return 1; //position error
for(j=i;j<L.n-1;j++)
L.v[j]=L.v[j+1]; //前移 ;
L.n--; //修改表长;
return 0;
}