📄 libo.cpp
字号:
// libo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "SqList.cpp"
#include <conio.h>
int Compare(const int &a, const int &b)
// 回调函数(把函数作为参数)
{
if(a == b) return 0;
else if(a > b) return 1;
else return -1;
}
bool Print(int i, const int& e)
// 回调函数,演示Visit的写法
{
cout << "data[" << i << "] = " << e << endl;
return true;
}
void PrintSL(CSqList<int> &v)
// 显示顺序表的内容,演示Visit的用法
{
if(v.IsEmpty()) cout << "<empty>\n";
else v.Traverse(Print);
}
int main()
{
CSqList<int> s1, v;
char ch = '<';
int e;
int i;
for(i = 0; i < 10; i++) s1.Add(2 * i);
do {
cout << "\n -= SqList Menu =-" << endl;
cout << "a - Add\n";
cout << "i - Insert\n";
cout << "t - Remove Tail\n";
cout << "e - Erase an element\n";
cout << "E - Erase elements\n";
cout << "c - Clear all elements\n";
cout << "l - Locate elements\n";
cout << "p - PrintSL\n";
cout << "r - resize\n";
cout << "s - Size\n";
cout << "C - Capacity\n";
cout << "m - Merge two CSqLists\n";
cout << "u - Union two CSqLists\n";
cout << "x - Exit\n\n";
ch = _getch(); // 无需回车
switch(ch) {
case 'a':
cout << "Enter data: ";
cin >> e;
v.Add(e);
break;
case 'i':
cout << "Where: ";
cin >> i;
cout << "data: ";
cin >> e;
try { v.Insert(i, e); }
catch(...) { cerr << "Index Error!\n"; }
break;
case 't':
v.RemoveTail();
PrintSL(v);
break;
case 'e':
cout << "Where: ";
cin >> i;
try {
v.Erase(i);
PrintSL(v);
}
catch(...) {
cerr << "Error parameter!\n";
}
break;
case 'E':
break;
case 'c':
v.Clear();
cout << "Current size is " << v.Size() << endl;
cout << "Current capacity is " << v.Capacity() << endl;
break;
case 'l':
//cout << "Element value: ";
//cin >> e;
//cout << "The index is "<< v.Locate(e, Compare) << endl; // 注意函数名本身就是地址,使用函数名参数时不要再填其参数表
break;
case 'r':
cout << "Current capacity is " << v.Capacity() << ".\nEnter new Capacity: ";
cin >> i;
cout << "Current increment is " << v.Increment() << ".\nEnter new Increment: ";
cin >> e;
v.Resize(i, e);
cout << "Current size is " << v.Size() << endl;
cout << "Current capacity is " << v.Capacity() << endl;
break;
case 's':
cout << "Current size is " << v.Size() << endl;
break;
case 'C':
cout << "Current capacity is " << v.Capacity() << endl;
break;
case 'm':
//v.Merge(&v1, Compare);
//PrintSL(v);
//cout << "Current size is " << v.Size() << endl;
//cout << "Current capacity is " << v.Capacity() << endl;
break;
case 'u':
//v.Uion(&v1, Compare);
//PrintSL(v);
//cout << "Current size is " << v.Size() << endl;
//cout << "Current capacity is " << v.Capacity() << endl;
break;
case 'p':
PrintSL(v);
break;
}
} while(ch != 'x');
getchar ();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -