档案网站建设视频,做网站需要写代码吗,织梦资源网模板,电脑iis做网站Description
给定一个按升序排列的顺序表#xff0c;请删除所有重复的元素#xff0c;使得每个元素只出现一次#xff0c;并输出处理后的顺序表。
Input
第一行输入t#xff0c;表示有t个测试样例。
第二行起#xff0c;每一行首先输入n#xff0c;表示有n个元素请删除所有重复的元素使得每个元素只出现一次并输出处理后的顺序表。
Input
第一行输入t表示有t个测试样例。
第二行起每一行首先输入n表示有n个元素接着依次输入n个元素。
Output
每一行输出处理后的顺序表。
Sample Input 5 3 1 1 2 5 1 1 2 3 3 6 1 1 1 2 2 2 7 -1 22 33 33 33 44 44 0 Sample Output 2 1 2 3 1 2 3 2 1 2 4 -1 22 33 44 0 Hint
0 n 50
-100 元素的值 100
给定的顺序表为升序排列。 思路
在solve函数里面用total变量记录不重复的元素个数循环遍历最初的顺序表因为有提示说给定顺序表是升序那么只需要判断当前元素和上一个元素是否重复如果当前元素和上一个不重复那么就重新按顺序存入数组用 j 记录顺序表位置。遍历结束之后再用循环将顺序表输出total就为顺序表长度了。 AC代码
#includeiostream
#includecstring
#includealgorithm
using namespace std;
#define ok 0
#define error -1
// 顺序表类定义
class SeqList
{
private:int* list; // 元素数组int maxsize; // 顺序表最大长度int size; // 顺序表实际长度
public:SeqList(); // 构造函数~SeqList(); // 析构函数int list_size() {return size;}; // 获取顺序表实际长度void set(int length) {this-size length;for (int i 0; i length; i) {cin *(list i);}}//用于初始化数组void solve(SeqList t) {int total 0;for (int i 0,j 0; i size; i) {if (t.list[i] ! t.list[i-1] || i 0) {*(list j) *(list i);j;total;}}cout total ;for (int i 0; i total; i) {cout *(list i) ;}cout endl;}
};
SeqList::SeqList()
{maxsize 1000;size 0;list new int[maxsize];
}
SeqList::~SeqList()
{delete []list;
}int main()
{int t;cin t;int num;SeqList* p new SeqList[t];for (int i 0; i t; i) {cin num;p[i].set(num);p[i].solve(p[i]);}return 0;
}