c语言:顺序表的实现(三)将元素e插入到一个递减有序表中,不改变顺序表的递减有序性。
2016-03-22 23:47
627 查看
#include<iostream> #include<stdio.h> #define LIST_INIT_SIZE 100 using namespace std; struct Node { int *elem; int Length; int Listsize; }; void Error(char *s) //错误处理函数 { cout << s << endl; exit(1); } void InitNode(Node &L) //初始化函数 { L.elem = new int[LIST_INIT_SIZE]; if (!L.elem) Error("Overflow!"); L.Length = 0; L.Listsize = LIST_INIT_SIZE; } void CreatNode(Node &l) //创建顺序表 { int n; cout << "请输入元素个数:"; cin >> n; cout << "请输入数据元素:" << endl; for (int i = 0; i < n; i++) { cin >> l.elem[i]; l.Length++; } cout << "顺序表创建成功!" << endl; } void printNode(Node &l) //输出函数 { for (int i = 0; i < l.Length; i++) { cout << l.elem[i]<<" "; } cout << endl; } void IncreaseNode(Node &l, int e)//将元素e插入到 { if (l.Length >= l.Listsize) Error("Linear List overflow!"); for (int i = l.Length; (i > 0) && (l.elem[i - 1]<e); i--) { l.elem[i] = l.elem[i - 1]; l.elem[i - 1] = e; } l.Length++; } void Bublesort(Node &l) //冒泡排序法递减排序 { int i, j, k; for (j = 0; j<l.Length; j++) // 气泡法要排序n次 { for (i = 0; i<l.Length - j; i++) // 值比较下的元素沉下去后,只把剩下的元素中的最大值再沉下去就可以啦 { if (l.elem[i]<l.elem[i + 1]) //把值比较小的元素沉到底 { k = l.elem[i]; l.elem[i] = l.elem[i + 1]; l.elem[i + 1] = k; } } } } int main() { Node t; int n; InitNode(t); CreatNode(t); printNode(t); Bublesort(t); printNode(t); cout << "请输入要插入的元素:"; cin >> n; IncreaseNode(t, n); printNode(t); return 0; }
相关文章推荐
- [C++] State Pattern 实作
- C++ 容器
- 插入排序
- VS中警告等级的含义
- c语言:顺序表的实现(二 ) 就地逆置,有序合并,大小调整。
- C++ 关键字const
- 在共享DLL中使用MFC 和在静态库中使用MFC区别
- 基础补完系列 - C++ Primer Plus 第三章
- C++的vector容器用法
- effective C++ 第一章:从C转向C++
- 作业:c++作业2-标准体重
- C++求动态数组长度(windows通过)
- C++ 多线程计时的bug,千万别用clock()
- C++11 right value
- 代码规范_3:c++ _异常
- C语言的一个语法糖
- C++11 nullptr test
- 作业:c++作业2-求两点之间的距离
- 【c++】字符串的冒泡排序【存疑,待查】
- 【c++】字符串的冒泡排序【存疑,待查】