#include<iostream> #include<string.h> using namespace std; #define MaxSize 1000 typedef struct { int data[1000]; int length; }SqlList; void InitList(SqlList& L) { for (int i = 0; i < 1000; i++) L.data[i] = 0; L.length = 0; } void ListPlay(SqlList &L) { int i; cout << L.length << ' '; for (i = 0; i < L.length; i++) cout << L.data[i] << ' '; cout << endl; } void ListInsert(SqlList& L, int i, int e) { if (i<1 || i>L.length) cout << "error" << endl; else if (L.length>1000) cout << "error" << endl; else { for (int j = L.length; j >= i; j--) L.data[j] = L.data[j - 1]; L.data[i - 1] = e; L.length++; ListPlay(L); } } void ListDelete(SqlList& L, int i) { if (i<1 || i>L.length) cout << "error" << endl; else { for (int j = i; j < L.length; j++) L.data[j - 1] = L.data[j]; L.length--; ListPlay(L); } } int ListSearch(SqlList L, int i) { return L.data[i-1]; } int main() { SqlList L; InitList(L); cin >> L.length; for (int i = 0; i < L.length; i++) cin >> L.data[i]; ListPlay(L); int p1, d1; cin >> p1 >> d1; ListInsert(L, p1, d1); int p2, d2; cin >> p2 >> d2; ListInsert(L, p2, d2); int p3; cin >> p3; ListDelete(L, p3); int p4; cin >> p4; ListDelete(L, p4); int p5, p6; cin >> p5; if (p5 >= 1 && p5 < L.length) { int result1 = ListSearch(L, p5); cout << result1 << endl; } else cout << "error" << endl; cin >> p6; if (p6 >= 1 && p6 < L.length) { int result1 = ListSearch(L, p6); cout << result1 << endl; } else cout << "error" << endl; return 0; }有什么可优化的地方?
时间: 2024-04-01 19:33:05 浏览: 38
这段代码本身没有太大问题,但是可以进行一些优化:
1. 对于顺序表的长度可以使用动态内存分配,避免固定长度的限制。
2. 在插入和删除操作时,可以使用函数返回值来判断是否执行成功,而不是直接在函数内部输出错误信息。
3. 对于查找操作,可以使用引用传参,避免数据的拷贝。
4. 可以使用 STL 中的 vector 容器代替手动实现的顺序表,方便快捷。
5. 在函数内部加入注释,方便代码的理解和维护。
综上所述,虽然这段代码已经实现了基本的顺序表操作,但在实际应用中还有很多需要优化的地方。
相关问题
#include <iostream.h> #include <stdlib.h> #define MAXSIZE 100 //顺序栈初始化时分配的存储空间长度 typedef struct
#include <iostream.h> 是一个C++的头文件,用于输入输出流操作。它包含了一些用于输入输出的函数和对象,例如cout和cin。
#include <stdlib.h> 是一个C语言的头文件,它包含了一些常用的函数,例如malloc和free,用于动态内存分配和释放。
#define MAXSIZE 100 是一个预处理指令,用于定义一个常量MAXSIZE,并将其值设置为100。这样在程序中可以使用MAXSIZE来表示一个固定的长度。
typedef struct 是用于定义结构体的关键字。结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。
请问还有什么其他问题吗?
直接插入排序。 #include <iostream> #define MAXSIZE 1000 using namespace std; typedef struct { int key; char *otherinfo; }ElemType; typedef struct { ElemType *r; int length; }SqList; void InsertSort(SqList &L) { int i,j; for(i=2;i<=
L.length;i++) { //从第二个元素开始插入排序 if(L.r[i].key<L.r[i-1].key) { L.r[0]=L.r[i]; //哨兵 L.r[i]=L.r[i-1]; for(j=i-2;L.r[0].key<L.r[j].key;j--) { //从后往前比较 L.r[j+1]=L.r[j]; //记录后移 } L.r[j+1]=L.r[0]; //插入到正确位置 } } }
以上是直接插入排序的 C++ 代码实现,使用了哨兵来简化代码。对于一个长度为n的序列,平均时间复杂度为O(n^2),最坏时间复杂度为O(n^2),空间复杂度为O(1)。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)