目录
第二章 线性表
顺序表的递增排序
删除顺序表特定的全部元素值
第二章 线性表
顺序表的递增排序
题目:已知顺序表L中的元素递增有序排列,设计算法将元素x插入到表L中并保持表L的递增有序
我的答案:
1.分析:创建数组——冒泡排序,从小到大——放入顺序表——完成顺序表的基本操作构建——顺序表的排序
2.知识点:
冒泡排序:(29条消息) 冒泡排序法(C++实现)_孤岛violet-CSDN博客_冒泡排序c++代码
线性表的排序:(29条消息) C++ 顺序表的基本操作(使用模版类)_ChanJose的博客-CSDN博客
3.我的实现:
#includeusing namespace std; const int MaxSize = 100; template class SeqList { public: SeqList(); SeqList(DataType a[], int n); void Insert(int i,DataType x); int Length(); void Print(); void Sort(); private: DataType data[MaxSize]; int length; }; template SeqList ::SeqList() { length = 0; } template SeqList ::SeqList(DataType a[], int n) { if (n > MaxSize) throw"长度非法"; for (int i = 0; i < n; i++) data[i] = a[i]; length = n; } template int SeqList ::Length() { return length; } template void SeqList ::Insert(int i,DataType x) { if (length >= MaxSize) throw "上溢"; if (i<1 || i>length + 1) throw "插入位置有误"; for (int j = length; j >= i; j--) data[j] = data[j - 1]; data[i - 1]=x; length++; } template void SeqList ::Print() { for (int i = 0; i < length; i++) cout << data[i]<<"t"; } template void SeqList ::Sort() { for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - 1 - i; j++) { if (data[j] > data[j + 1]) { DataType tmp = data[j]; data[j] = data[j + 1]; data[j + 1] = tmp; } } } } int main() { int a[7] = {22,4,54,1,2,45,9}; for (int i = 0; i < 6; i++) { for (int j = 0; j < 6 - i; j++) { if (a[j] > a[j + 1]) { int tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } SeqList s{ a,7 }; cout << "顺序表的元素分别是:"; s.Print(); cout << endl; s.Insert(2, 8); cout << "插入之后的顺序表为:"; s.Print(); cout << endl; cout << "排序之后的顺序表为:"; s.Sort(); s.Print(); }
4.运行结果:
删除顺序表特定的全部元素值
题目:在顺序表中删除所有元素值为x的元素
我的答案:
1.分析:改写顺序表的删除操作,将按位置删除改为按值删除
2.知识点:顺序表元素的删除(29条消息) c++删除数组中所有指定值的元素(暴力法、双指针法)_滚去学习……的博客-CSDN博客_c++数组删除指定元素33
3. 我的实现:
#includeusing namespace std; const int MaxSize = 100; template class SeqList { public: SeqList(); SeqList(DataType a[], int n); void Delete(DataType x); int Length(); void Print(); private: DataType data[MaxSize]; int length; }; template SeqList ::SeqList() { length = 0; } template SeqList ::SeqList(DataType a[], int n) { if (n > MaxSize) throw"长度非法"; for (int i = 0; i < n; i++) data[i] = a[i]; length = n; } template int SeqList ::Length() { return length; } template void SeqList ::Print() { for (int i = 0; i < length; i++) cout << data[i]<<"t"; } template void SeqList ::Delete(DataType x) { if (length == 0) throw "数组下溢"; for (int i = 0; i < length; i++) { if (data[i] == x) { for (int j = i+1; j < length; j++) { data[j - 1] = data[j]; } length--; } } } int main() { int a[10] = {4,2,3,4,3,4,1,7,8,9}; SeqList s{ a,10 }; cout << "顺序表的元素分别是:"; s.Print(); cout << endl; s.Delete(4); cout << "删除后顺序表的元素:"; s.Print(); }
4.运行结果:



