数据结构练习代码(一)顺序表元素插入

//Date 2018.7.3


//Coder Rebellion


//建立了一个动态分配空间的顺序表


//编写了插入元素函数,以及查找插入函数


#include


#include"malloc.h"
using namespace std;




#define INITIALSIZE 50
#define SIZEINCREMENT 10
#define OK 1
#define ERROR 0
#define status int




typedef struct SqList
{
int* Base;//Base是指向存储空间第一个位置的指针 
int Length;//用于记录实际元素个数 
int Size;//用于记录存储空间长度 
}SqList;//顺序表的定义 




status InitializeList(SqList &L)
{
L.Base = (int *)malloc((INITIALSIZE)*sizeof(int));//开辟空间 
if(!L.Base) return ERROR;//开辟失败返回错误 
L.Length = 0;//开始的表内元素个数为零 
L.Size = INITIALSIZE; 
} //初始化顺序表 




status AssignValues(SqList &L)//赋值函数 
{
int num,i;
cout<<"num of elements to be assigned:";
cin>>num;//要输入的元素个数 
for(i=0;i {
if(L.Length==INITIALSIZE) //顺序表已满,重新开辟(非必需,可省略,会降低程序健壮性) 
{
L.Base = (int *)realloc(L.Base,(INITIALSIZE+SIZEINCREMENT)*sizeof(int));
if(!L.Base)return ERROR;
L.Size = L.Size+SIZEINCREMENT;
}
cout<<"the "< cin>>L.Base[L.Length];
L.Length++;
}
}




void Print(SqList &L)//依次打印元素 
{
int i;
for(i=0;i cout< cout<}




status FindandInsert(SqList &L,int x)
{
int i,t;
for(i=0;i if(L.Base[i]>=x) break;//找到大于输入的第一个元素后,跳出,此时i即为插入位置 
for(t=L.Length+1;t>i;t--)
L.Base[t+1]=L.Base[t];//从最后一个到i位置元素向后移动 
L.Base[i]=x;//将i位置赋值x 
L.Length++;//表长加一 
}




int main()
{
SqList A;
InitializeList(A);
AssignValues(A);
Print(A);
AssignValues(A);
FindandInsert(A,12);
Print(A);
return 0;
}

你可能感兴趣的:(Data,Structure)