要求:设计顺序表 SqList。编写程序,实现从 SqList 中,删除具有给定值 x 的所有元素
这是一个数据结构的知识运用,需要用到的知识:
1.使用结构体来定义顺序表。
2.动态数组的基本操作,包括插入和删除。
3.遍历数组并根据条件修改数组内容。
4.基本的输入输出操作。
具体代码:
#include<iostream>
using namespace std;
#define MAXSIZE 100
typedef struct { //定义顺序表
int* elem;
int length;
} SqList;
void InitList(SqList& L) //创建顺序表
{
L.elem = new int[MAXSIZE];
L.length = 0;
}
void inList(SqList* sq) //输入
{
int i = 0;
int n;
cout << "请输入顺序表的长度" << endl;
cin >> n;
cout << "请输入顺序表的元素" << endl;
while (i < n)
{
i++;
cin >> sq->elem[i];
sq->length++;
}
}
int sqdelete(SqList* sq, int n) //删除元素
{
int j;
for (j = n; j < sq->length; j++)
{
sq->elem[j] = sq->elem[j + 1];
}
sq->length--;
return 1;
}
void sqdeleteall(SqList* sq, int x) //删除所有的值为 x 的数
{
int i;
int n;
for (i = 0; i <= sq->length; i++)
{
if (sq->elem[i] == x)
{
sqdelete(sq, i);
i--;
}
}
}
void show(SqList* sq) //输出顺序表所有元素
{
int i;
cout << "删除后的顺序表" << endl;
for (i = 1; i <= sq->length; i++)
{
cout << sq->elem[i] << " ";
}
cout << endl;
}
int main()
{
int x; //删除所有为 x 的数
SqList sq;
InitList(sq); //初始化顺序表
inList(&sq);
cout << "请输入你要删除的元素" << endl;
cin >> x;
sqdeleteall(&sq, x); //删除所有为 x 的数
show(&sq);
cout << endl;
return 0;
}
示例测试:
觉得有帮助的话,点个赞吧!