您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习---线性表顺序存储结构的应用(一):删除操作

2017-11-07 16:55 405 查看
顺序表的删除操作(假设有若干个删除元素x)

基本思路: 逐个查询删除元素,一旦出现删除元素,即将该元素删除,将后续元素前移

void DeleteOperate(int *sequence, int &len, int x)
{
//int Loc = 0;
for (int i = 0; i < len; i++)
{
if(sequence[i] == x)
{
len = len - 1;
for(int Loc = i; Loc < len; Loc++)
{
sequence[Loc] = sequence[Loc+1];
}
i = i - 1;//删除第i个元素,防止前移第i位的元素与删除元素相同,重新检验第i位

}
}

}

附上整体程序:
//顺序表的删除操作(删除值为x的元素,假设线性表中有若干个x元素)

#include <iostream>
#include <vector>
using namespace std;

// 方法是每碰到一次删除元素即移位;
void DeleteOperate(int *sequence, int &len, int x)
{
//int Loc = 0;
for (int i = 0; i < len; i++)
{
if(sequence[i] == x)
{
len = len - 1;
for(int Loc = i; Loc < len; Loc++)
{
sequence[Loc] = sequence[Loc+1];
}
i = i - 1;//删除第i个元素,防止前移第i位的元素与删除元素相同,重新检验第i位

}
}

}

void PrintElement(int *sequence, int len)
{
for(int count = 0; count < len; count++)
cout << sequence[count] << " " ;
}

int main ()
{
int len = 6;
int sequence[6] = {1,2,2,4,5,6};
int *seq = &sequence[0];
PrintElement(seq, len);
DeleteOperate(seq,len, 2);
//InsertOperate(seq, len, 3);
cout << endl;
PrintElement(seq, len);

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐