14天阅读挑战赛
努力是为了不平庸~
目录
构建结构体
typedef struct aqlist
{
int* data;
int length;
}aqlist;
初始化
void initlist(aqlist& l)
{
l.data = new int[MAX];
l.length = 0;
}
输入数据
void ListInput(aqlist &L, char filename[])
//与源代码同级目录下的文件filename中输入数据,把数据读入到线性表L中
{
int i = 0;
fstream file; //构造fstream类的对象file,你可以理解为是一个有操作的ADT
file.open(filename); //使用file对象中的open操作打开filename中的文件
if(!file) //如果没见不存在则返回空,输出找不到文件的提示信息
{
cout << "未找到相关文件,无法打开!" << endl;
exit(ERROR);
}
while (!file.eof())
//使用file对象中判断文件中数据是否结束的方法eof。如果到达文件结尾返回true,否
//?false
{
file >> L.data[i]; //文件中的数据流式输入到线性表中
i++;
}
L.length = i; //更新线性表表长
}
查找第X个元素
int search(aqlist& l, int x)
{
return l.data[x - 1];
}
在表的第i个位置,插入元素x
void insert(aqlist& l, int i, int x)
{
for (int j = l.length - 1; j >= i - 1; j--)
l.data[j + 1] = l.data[j];
l.data[i - 1] = x;
l.length++;
}
删除表的第i个元素
void shanchu(aqlist& l, int i)
{
for (int j = i; j <= l.length - 1; j++)
l.data[j - 1] = l.data[j];
l.length--;
}
修改第i个元素为x
void xiugai(aqlist& l, int i, int x)
{
l.data[i - 1] = x;
}
求表的长度
void length(aqlist &l)
{
int i=0;
while(l.data[i]!=NULL)
{
i++;
}
l.length=i;
}
输出顺序表
void ListOutput(aqlist l)
{
for(int i=0;i<l.length;i++)
{
cout<<l.data[i]<<" ";
}
cout<<endl;
}
顺序表的优点:
(1)无须增加额外的存储空间表示结点间的逻辑关系。
(2)可以方便地随机存取表中任一结点。
顺序表的缺点:
(1)插入和删除运算不方便,通常须移动大量结点,效率较低。
(2)难以进行连续的存储空间的预分配,尤其是当表变化较大时。