新人博主为大二在校生,大一学过一次数据结构可怎奈当时草草划水而过,因此今天这里准备重拾数据结构,为了不再囫囵而过,想在csdn上留下学习记录(dalao略过就好),也欢迎大家讨论指正,在此谢过。

话不多说,今天学习的部分是线性表的顺序表部分。 下面给出顺序表的实现代码和应用——建立一个简易的通讯录。(最终效果在最底部)

// SeqList_test.h 部分#include <iostream>                       //模板类在头文件里写
using namespace std;template <class T, int N>class SeqList
{
public:SeqList() { length = 0; }          //无参构造函数      缺少这行会显示“没有合适的默认构造函数使用”SeqList(T a[], int n);              //有参构造函数void PrintList();                   //遍历元素函数T Delete(int n);                //删除函数int Locate(T x);                  //查找顺序表中值为x的元素T Get(int i);                     //获取顺序表第i个位置上的元素void Insert(int i, T x);        //在第i个位置上插入元素x
private:T data[N];                         //存储顺序表数据元素的数组int length;                           //顺序表的长度
};template<class T, int N>
SeqList<T, N>::SeqList(T a[], int n)
{if (n > N) throw"数组长度超过顺序表最大长度";for (int i = 0; i < n; i++)data[i] = a[i];length = n;
}/*                                  初始遍历函数
template<class T, int N>
void SeqList <T, N>::PrintList()
{cout << "按序号依次遍历线性表中的各个数据元素" << endl;for (int i = 0; i < length; i++)cout << "data[i]" << endl;cout << endl;
}
*/template<class T, int N>                     //本例中所使用的遍历函数
void SeqList<T, N>::PrintList() {          //按序号依次遍历顺序表中的各个数据元素for (int i = 0; i < length; i++)data[i].print();cout << endl;
}template<class T, int N>
void SeqList <T, N>::Insert(int i, T x)
{if (length >= N) throw"上溢异常";if (i<1 || i>length + 1) throw"位置异常";for (int j = length; j >= i; j--)data[j] = data[j - 1];data[i - 1] = x;length++;
}template<class T, int N>
T SeqList<T, N>::Delete(int i)
{if (0 == length) throw"下溢异常";if (i<1 || i>length) throw"位置异常";T x = data[i - 1];for (int j = i; j < length; j++)data[j - 1] = data[j];length--;return x;
}template<class T, int N>
T SeqList<T, N>::Get(int i)
{if (i<1 || i>length) throw"查找位置非法";return data[i-1];
}template<class T, int N>
int SeqList<T, N>::Locate(T x)
{for (int i = 0; i < length; i++)if (data[i] == x)return i + 1;return 0;
}
// SeqList_test.cpp 部分
#include"SeqList_test.h"
#include<string>class PHONEBOOK                          //“类”一定要“封装”好,别丢了大小括号......
{
private:int m_ID;string m_name;string m_phone;string m_group;
public:PHONEBOOK(){}                        //缺少这行会显示“没有合适的默认构造函数使用”PHONEBOOK(const int id, const char* name, const char* phone, const char* group) { //有参构造函数m_ID = id;m_name = name;m_phone = phone;m_group = group;}void print() {                      //显示函数cout << m_ID << '\t' << m_name << '\t' << m_phone << '\t' << m_group << endl;}bool operator == (PHONEBOOK& p) {  //重载“==”运算符,从而使locate()函数可用if (p.m_ID == m_ID)return true;elsereturn false;}
};void main(){PHONEBOOK pbook[4] = { {2020522033,"Yang","13695568789","classmates"},{2020522034,"Tu","15601357298","myself"},{2020522035,"Xiao","17982365545","classmates"},{2020522036,"Li","13641552003","classmates"}};PHONEBOOK record(2020522055, "Zhao", "13320056966", "classmates");SeqList<PHONEBOOK, 100>list(pbook, 4);cout << "通信录内容列表:" << endl;list.PrintList();list.Insert(1, record);cout << "通信录内容列表:" << endl;list.PrintList();PHONEBOOK x = list.Delete(3);cout << "删除元素:" << endl;x.print();cout << "通信录内容列表:" << endl;list.PrintList();int p = list.Locate(record);cout << "phoneix的位置是:" <<p<< endl;}

最终实现效果:

今天的记录就到这里啦。

【初学数据结构系列】 顺序表的实现——通讯录相关推荐

  1. c++ list 修改_C/C++编程笔记:数据结构系列——顺序表的实现,内含源码

    一.原理 1.定义 顺序表是在计算机中以数组形式保存的. 2.特点 在计算机中占用连续的一段内存 一旦声明,空间大小一般不变 二.初始化相关操作 包括: (1)结构体的定义 (2)顺序表的创建 (3) ...

  2. 数据结构入门——顺序表(SeqList)详解(初始化、增、删、查、改)

    SeqList顺序表 1. 线性表介绍 2. 顺序表 2.1 顺序表的结构介绍 2.2 顺序表的定义和接口声明--`SeqList.h` 2.3 顺序表接口函数的具体实现--`SeqList.c` 3 ...

  3. 【数据结构】顺序表的应用(4)(C语言)

    [数据结构]顺序表的应用(1)(C语言) [数据结构]顺序表的应用(2)(C语言) [数据结构]顺序表的应用(3)(C语言) 设计一个算法,将一个顺序表倒置,即如果顺序表各个节点值存储在一维数组a中, ...

  4. 【数据结构】顺序表的应用(3)(C语言)

    问题: 已知一个顺序表中的各节点值是从大到小有序的,设计一个算法,插入一个值为x的节点,使顺序表中的节点仍然是从小到大有序的. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #includ ...

  5. 【数据结构】顺序表的应用(2)(C语言)

    问题: 2.有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #in ...

  6. 【数据结构】顺序表的应用(1)(C语言)

    问题: 1.将顺序表(a1,a2,-,an)重新排列以a1为界的两部分:a1前面的值均比a1小,a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型). 头文件与该头文件一样:[数据 ...

  7. 数据结构 创建顺序表

    3.18数据结构--创建顺序表 运行结果截图: #define _CRT_SECURE_NO_WARNINGS #define MAXSIZE 100 #include<stdio.h> ...

  8. 数据结构之顺序表的删除、查找、遍历

    一.引言 本篇文章作为顺序表新的篇章延续上一篇文章(数据结构之顺序表构造.插入.扩容操作)的内容. 二.顺序表的删除.查找.遍历操作 注:代码实现均为C语言 1.顺序表的删除(erase)操作 当我们 ...

  9. 数据结构_顺序表SeqList(C++

    数据结构_SeqList顺序表(C++实现 文章目录 数据结构_SeqList顺序表(C++实现 前言&注意事项 顺序表实现方法 总结 结束 前言&注意事项 有些函数没有修改成员数据的 ...

  10. Tsai笔记:C++学习随性笔记(2)—— 数据结构:顺序表的基本操作

    Tsai笔记:C++学习随性笔记(2)-- 数据结构:顺序表的基本操作 Tsai三步.(第一步,功能说明.第二步,结果图显示.第三步,代码展示) 第一步,功能说明. 1.线性表的顺序存储 线性表的顺序 ...

最新文章

  1. ORB-SLAM2从理论到代码实现(六):Tracking.cc程序详解(上)
  2. 在Flash中利用PCRE正则式漏洞CVE-2015-0318的方法
  3. 动态规划:记忆化搜索
  4. 历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?
  5. MyBatis 流式查询
  6. HTTP协议简介_请求消息/请求数据包/请求报文_响应消息/响应数据包/响应报文
  7. linux grep命令 例子,14个grep命令使用例子
  8. css 相对定位与绝对定位
  9. 嵌入式如何移植php,关于嵌入式web服务器的移植
  10. python中输出语句的怎么写_python的输出语句怎么写
  11. 4、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——后台管理界面
  12. 计算机网络中型网吧规划设计,中小型网咖网络规划设计开题报告
  13. Unity3D实战【七】Cinemachine Post Processing 摄像机跟踪和后处理
  14. 青藤放飞“猎鹰”,主动防御又多一张牌
  15. Java 面试题经典 77 问(含答案)!
  16. 计算机三级缺考停一年,2020四级缺考会不会被禁考一年
  17. PS安装扩展面板提示无法加载,因为它未经正确签署解决方法(适用于Mac/Win)
  18. mac 4k分辨率 字太小 27寸 hidpi_4k显示器选择Dell S2721QS还是LG 27ul650?
  19. [BZOJ3091][LCT]城市旅行
  20. 搜狐号文章图片解密还原 含调用例子

热门文章

  1. Tool-杂项-建模:犀牛(3D造型软件)
  2. ascll编码表图片_ASCLL编码表
  3. Golang优化之内存对齐
  4. 对象转json忽略空参
  5. 常见的Markdownpad2运行破解以及This view has crashed!报错和Awesomium1.6.6SDK安装使用
  6. IOUtils工具类的依赖maven
  7. webstorm主题、字体形式设置
  8. MMKV_Android数据持久化方案调研-MMKV SP REALM ROOM WCDB...
  9. PostgreSQL与mysql语法不同
  10. CAPL函数 Test Node中注册事件(TestJoin xxx)函数