考研数据结构复习之线性表
来源:互联网 发布:ubuntu u盘挂载 编辑:程序博客网 时间:2024/05/22 15:37
线性表之顺序表学习
#pragma once#define MaxListSize 100typedef int DataType;class SeqListTest{public: SeqListTest(); ~SeqListTest();};typedef struct{ DataType list[MaxListSize]; int length;}SeqList;void InitList(SeqList *L);bool ListEmpty(SeqList L);int GetElemByNum(SeqList L, int i, DataType *e);int GetLocateElem(SeqList L, DataType e);int InsertList(SeqList *L, int i, DataType e);int DeleteList(SeqList *L, int i, DataType *e);int ListLength(SeqList L);void ClearList(SeqList *L);void PrintList(SeqList *L);
#include "SeqListTest.h"#include<iostream>using namespace std;SeqListTest::SeqListTest(){}SeqListTest::~SeqListTest(){}/*线性表初始化正确方法*/void InitList(SeqList * L){ L->length = 0;}/*线性表初始化错误方法void InitList(SeqList L){ L.length = 0;}*//*这里的错误是因为初始化的时候需要注意到L的本身需要改变,可以使用指针,或者是引用类型.引用类型的代码如下:void InitList(SeqList &L){ L.length = 0;}只需记住:不需要修改表L本身的时候就可以不用指针或者引用类型,像查询是否为空,只是得到数据(顺序表的长度),而不是修改就可以直接使用例如bool ListEmpty(SeqList L)的传参形式。这是其实也是参数的传递的按照值传递和引用传递的区别。不清楚的可以回去看一下教材。再补充一点:void InitList(SeqList &L){ L.length = 0;}初始化的时候----使用时: SeqList L; InitList(L);void InitList(SeqList * L){ L->length = 0;}初始化的时候----使用时: SeqList L; InitList(&L);*/bool ListEmpty(SeqList L){ if (L.length==0) { return true; } return false;}/*按照序号来查找元素*/int GetElemByNum(SeqList L, int i, DataType * e){ if (ListEmpty(L)) { return -1; } else if (i<1&&i>L.length) { return -1; } else { *e = L.list[i - 1]; return 1; }}/*查找线性表中元素所在的位置*/int GetLocateElem(SeqList L, DataType e){ for (int i = 0; i <L.length; i++) { if (L.list[i]==e) { return i + 1; } } return -1;}/*往线性表中插入数据(1)判断线性表是否满,插入位置是否合理,可插入的位置注意到第一个和最后一个*/int InsertList(SeqList * L, int i, DataType e){ int j; if (L->length==MaxListSize) { return -1; } /*插入位置不合法*/ else if(i<1&&i>L->length+1) { return -1; } else { for ( j = L->length; j >i; j--) { L->list[j ] = L->list[j-1]; } L->list[i-1] = e; L->length = L->length + 1; return 1; }}/*删除线性表中的元素并且将删除的元素的值赋给e(1)先判断线性表是否为空(2)删除位置是否合法*/int DeleteList(SeqList * L, int i, DataType * e){ int j; if (ListEmpty(*L)) { return -1; } else if (i<1&&i>L->length) { return -1; } else { *e=L->list[i - 1]; for ( j= i; j< L->length; j++) { L->list[j - 1] = L->list[j]; } L->length = L->length - 1; return -1; }}int ListLength(SeqList L){ return L.length;}void ClearList(SeqList * L){ L->length = 0;}void PrintList(SeqList * L){ for (int i = 0; i < L->length; i++) { cout << L->list[i] << " "; } cout << endl;}
测试main:
int main() { SeqList L; InitList(&L); InsertList(&L, 1, 1); InsertList(&L, 2, 2); InsertList(&L, 3, 3); InsertList(&L, 4, 4); InsertList(&L, 5, 5); PrintList(&L); cout << ListLength(L) << endl; DataType e; DeleteList(&L, 1, &e); cout << e << endl; PrintList(&L); cout << GetLocateElem(L, 3) << endl; GetElemByNum (L,2,&e); cout << e << endl; cout << ListLength(L) << endl; system("PAUSE"); return 0; }
阅读全文
0 0
- 考研数据结构复习之线性表
- 考研数据结构复习之线性表(二)
- 数据结构考研复习--线性表1
- 数据结构考研复习--线性表2
- 数据结构复习之【线性表】
- 数据结构复习之线性表
- 数据结构之【线性表】--复习
- 复习-数据结构之线性表
- 数据结构复习之线性表
- 数据结构考研复习--线性表3(约瑟夫环)
- 18考研-数据结构复习笔记-线性表01
- 18考研-数据结构复习笔记-线性表02
- 18考研-数据结构复习笔记-线性表03
- [考研系列之数据结构]线性表概述
- 数据结构复习之路-线性表
- [考研系列之数据结构]线性表之链表
- [考研系列之数据结构]线性表之栈
- [考研系列之数据结构]线性表之队列
- ubuntu下安装arm-linux-gcc交叉编译环境
- JSP中的pagaEncoding和contentType中charset的区别
- Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(五)配置 Axios api 接口调用文件
- 初学Nginx(一)监听两个端口,实现转发
- Median [二分]
- 考研数据结构复习之线性表
- 常见的几种RuntimeException
- Oracle exp/imp导入不同的表空间
- java 数据结构与排序
- .net多线程学习
- Socket编程中select函数用法详解(转)
- charles(windows64位) 抓包工具安装及详解
- 柔性数组
- 【Java】Reactor模式