概述
//Coder Rebellion
//建立了一个动态分配空间的顺序表
//编写了插入元素函数,以及查找插入函数
#include<iostream>
#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<num;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 "<<i+1<<"th element to be assigned:";
cin>>L.Base[L.Length];
L.Length++;
}
}
void Print(SqList &L)//依次打印元素
{
int i;
for(i=0;i<L.Length;i++)
cout<<L.Base[i]<<" ";
cout<<endl;
}
status FindandInsert(SqList &L,int x)
{
int i,t;
for(i=0;i<L.Length;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;
}
最后
以上就是碧蓝大地为你收集整理的数据结构练习代码(一)顺序表元素插入的全部内容,希望文章能够帮你解决数据结构练习代码(一)顺序表元素插入所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复