⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libo.cpp

📁 线性表的使用 如何建立线性表
💻 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 + -