我是靠谱客的博主 碧蓝大地,最近开发中收集的这篇文章主要介绍数据结构练习代码(一)顺序表元素插入,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//Date 2018.7.3


//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;
}

最后

以上就是碧蓝大地为你收集整理的数据结构练习代码(一)顺序表元素插入的全部内容,希望文章能够帮你解决数据结构练习代码(一)顺序表元素插入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部