#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 16:33:05 浏览: 129
使用include <iostream>时一定要加using namespace std
这段代码本身没有太大问题,但是可以进行一些优化:
1. 对于顺序表的长度可以使用动态内存分配,避免固定长度的限制。
2. 在插入和删除操作时,可以使用函数返回值来判断是否执行成功,而不是直接在函数内部输出错误信息。
3. 对于查找操作,可以使用引用传参,避免数据的拷贝。
4. 可以使用 STL 中的 vector 容器代替手动实现的顺序表,方便快捷。
5. 在函数内部加入注释,方便代码的理解和维护。
综上所述,虽然这段代码已经实现了基本的顺序表操作,但在实际应用中还有很多需要优化的地方。
阅读全文