数据结构 线性表
来源:互联网 发布:qq音乐网站源码 编辑:程序博客网 时间:2024/06/17 14:25
在线性表中
存在唯一的第一个元素和最后一个元素
除第一个元素外 其他元素有且仅有一个直接前驱, 第一个元素没有直接前驱
除最后一个元素外, 其他元素有且仅有一个直接后继 最后一个元素没有直接后继
线性表中元素和位置之间可以有关系 也可以没有关系
用顺序存储方式实现的线性表称为顺序表 它是用向量作为其存储结构的(即一维数组)
顺序表的静态存储结构:
extarea readonly="readonly" name="code" class="c++">#include<iostream>#include<stdlib.h>#include<algorithm>#define initSize 100 //初始大小using namespace std;typedef int dataType;class seqList {private:dataType *data; int maxSize, n; //已有数组和最大数组public:seqList() {data = new dataType[initSize];maxSize = initSize;n = 0;}void clearList(); //清除顺序表int Length(); //获取线性表长度int isEmpty(); //判断表空否int isFull(); //判断表是否已满void add(dataType num);void explore();void insert(dataType num,int pos); //插入值void Delete(dataType num);//顺序表查找算法int Search(dataType num); //查找void Copy(seqList& L); //复制算法void swap(dataType &a, dataType &b) {dataType &temp = a;a = b;b = temp;}};//清空列表void seqList::clearList() {delete data;data = new dataType[initSize];n = 0; //顺序表清空为0}//获取长度int seqList::Length() {return n;}//判断是否为空int seqList::isEmpty() {return(n == 0) ? 1 : 0; //返回值为0吗}//判断是否为满int seqList::isFull() {return(n == maxSize) ? 1 : 0; //返回最大值}//查找指定数字int seqList::Search(dataType num) {for (int i = 1; i <= n; ++i) {if (data[i-1] == num) return i; //查找成功 返回值的位置}return 0;}//复制指定值void seqList::Copy(seqList& L) { //将元素复制到指定列表if (L.data) {int size = this->n;for (int i = 0; i < size; ++i) {L.data[i] = this->data[i];}L.n = size;}}//add值void seqList::add(dataType num) {this->data[n] = num;this->n++;}//遍历void seqList::explore() {int size = this->n;for (int i = 0; i < n; ++i) {dataType obj = this->data[i];cout << obj << " ";}cout << endl;}//插入值void seqList::insert(dataType num, int pos) {if (isFull()) {cout << "the list is full!!" << endl;return;}if (pos >= 0 && pos <= n) { //如果position符合范围的话this->n++;int i;for (i = n; i > pos; --i) {data[i + 1] = data[i];}data[i] = num;}}//删除值void seqList::Delete(dataType num) {if (isEmpty()) {cout << "the list is Empty!" << endl;return;}if (Search(num) == 0) {return;}int pos = Search(num) - 1;for (int i = pos; i < n; ++i) {data[i] = data[i + 1];}this->n--; //减少一位}int main() {seqList myList;seqList myList2;myList.add(10);myList.add(20);myList.add(30);myList.add(40);myList.add(50);int length = myList.Length();cout << length << endl;myList.Copy(myList2);int length_2 = myList2.Length();cout << length_2 << endl;myList.insert(999, 5);myList.Delete(1000);myList.explore();myList2.explore();system("PAUSE");return 0;}</textarea>
线性表的缺点:每次插入和删除都要移动元素 非常消耗内存
阅读全文
0 0
- 数据结构拾遗---线性表
- 整理--数据结构--线性表
- 数据结构(线性表)
- 整理--数据结构--线性表
- 数据结构--顺序线性表
- 数据结构之线性表
- 数据结构-线性链表
- 数据结构-线性表
- 复习 [数据结构] ---- 线性表
- 数据结构---线性表
- 数据结构复习-线性表
- 数据结构之线性表
- 数据结构之线性表
- 线性链表---数据结构
- 数据结构—线性表
- 数据结构 线性表
- 数据结构----线性表
- 数据结构之线性表
- python3.6 下连接mysql数据库实现用户登录与注册
- 矩形滑雪场
- 练习3
- Codeforces Round #430(Div.2) C,D,E题目详解
- Django学习的总结
- 数据结构 线性表
- python中的字符数字之间的转换函数
- SQLiteOpenHelper的使用及表更新关联操作
- 欢迎使用CSDN-markdown编辑器
- nypipe相关软件的安装
- JDK和CGLIB动态代理实践
- ListView多条目加载,根据图片判断所需要加载的类型
- Android 归属地查询手机号码
- iPhone 8上的新技术中国本土厂商都有了