线性表--顺序实现
2016-05-16 23:26
344 查看
/* 线性表:顺序实现 */ #include <iostream> #include <algorithm> using namespace std; #define MaxSize 1000 // 宏定义 int A[MaxSize]; int n; // 在loc位置插入元素item void InsertList(int &n, int loc, int item) { if (n == MaxSize) { cout << "线性表已满!" << endl; return; } if (loc < 0 || loc > n) { cout << "插入位置不正确!" << endl; return; } for (int i=n-1; i>=loc; i--) { A[i+1] = A[i]; } A[loc] = item; n++; } // 删除loc处的元素 void DeleteList(int &n, int loc) { if (loc < 0 || loc >= n) { cout << "删除位置不正确!" << endl ; return; } for (int i=loc; i<=n-2; i++) { A[i] = A[i+1]; } n--; } // 线性表排序 void SortList() { sort(A,A+n); } // 输出提示 void OutputHint() { cout << "############ 操作选项 ############" << endl; cout << "0:help" << endl; cout << "1:遍历线性表" << endl; cout << "2:插入元素" << endl; cout << "3:删除元素" << endl; cout << "4:查找元素" << endl; cout << "5:元素排序" << endl; cout << "############ 操作选项 ############" << endl; } // 遍历线性表 void TraverseList() { if (n == 0) { cout << "线性表为空!" << endl; return; } for (int i=0; i<n; i++) { cout << A[i] << " " ; } cout << endl; } void Init() { n = 0; } void Locate(int item) { bool isFirst = false; for (int i=0; i<n; i++) { if (A[i] == item) { if (!isFirst) { isFirst = true; cout << "元素" << item << "的位置是:" ; } cout << i << " "; } } (!isFirst)? cout << "元素" << item << "不存在!" << endl : cout << endl; } int main() { int choice,loc, item; Init(); OutputHint(); cout << "请输入操作序号:" ; while (true) { cin >> choice; switch (choice) { case 0: OutputHint(); break; case 1: TraverseList(); break; case 2: cout << "请输入要插入的位置(当前范围是[0-" << n << "]):"; cin >> loc; cout << "请输入元素值:"; cin >> item; InsertList(n,loc,item); break; case 3: cout << "请输入要删除的位置(当前元素个数:" << n << "):"; cin >> loc; DeleteList(n,loc); break; case 4: cout << "请输入要查找的元素:" ; cin >> item; Locate(item); break; case 5: SortList(); break; default : cout << "您输入的操作序号有误,请重新输入!" << endl; } cout << "请输入操作序号:" ; } }
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)