数据结构学习过程记录
顺序存储线性表拆分为两个线性表
初始线性表数据
拆分线性表
#include <iostream>
using namespace std;
const int Maxlen = 14;
typedef int dataType;
struct SqList
{
dataType data[Maxlen];
int len;
};
//定义初始化
void initSqList(SqList* pList)
{
//将pLIst指向的SqList类型变量的长度成员设置为0
pList -> len = 0;
}
//定义线性表插入操作
bool insertData(SqList* pList, int index, dataType newData)
{
if(pList ->len == Maxlen)
return false;
if(index < 0 || index > pList ->len)
return false;
for(int i = pList -> len; i >index; i--)
{
pList -> data[i] = pList -> data[i-1];
}
pList -> data[index] = newData;
pList -> len++;
return true;
}
//打印线性表数据
void printSqList(SqList* pList)
{
cout<<"线性表中的数据是:";
for (int i = 0; i < pList -> len; i++)
{
cout<<pList -> data[i]<<endl;
}
cout<<endl;
}
//对线性表进行初始化赋值
void setData(SqList* La,int i)
{
int x = 0,m = 0;
if (i <= 0 || i >= Maxlen)
cout<<"操作错误";
else
{
for (x;x < i;x++)
{
insertData(La,x,++m);
}
}
}
//定义被拆分线性表长度的改变
void listsert(SqList* pList,int i)
{
pList->len = i;
}
//定义线性表的才分操作
void splitSqList(SqList* La,SqList* Lb,int i)
{
int e = 0;
int m = 0;
if (i > La->len || i <= 0)
cout<<"操作失误!";
else
{
for (;i < La->len;i++)
{
e = La->data[i];
insertData(Lb,Lb->len,e);
}
}
}
int main()
{
int i;
SqList La;
SqList Lb;
initSqList(&La);
initSqList(&Lb);
setData(&La,10); //初始化线性表La为10个值
printSqList(&La);
cout<<"请输入要分开的位置:"<<endl;
cin>>i;
splitSqList(&La,&Lb,i); //拆分La从i处分为La,Lb两个线性表
listsert(&La,i); //设置线性表La的长度为i
printSqList(&La);
printSqList(&Lb);
system("pause");
}