通讯录链表实现之C++
前言
在mooc上学习了链表中的顺序表和单链表,并使用单链表数据结构跟着老师完成通讯录创建。通过这次链表练习使用,做一些总结。
自顶向下设计探索。
功能需求
在功能实现上,通讯录主要包括,创建联系人,删除联系人,显示联系人,退出通讯录。
通讯录
- 创建联系人
- 联系人信息
- 插入到存储结构中
- 删除联系人
- 获取删除联系人编号
- 删除联系人
- 显示联系人
- 遍历存储结构
- 退出通讯录
- 退出控制台
软件设计
- 模块划分
- 主控模块(主函数)
- 命令读取模块
- 命令解析模块
- 命令处理模块
- 结构划分
- 链表结构
- 构建函数
- 析构函数
- 清空
- is空
- 长度
- 获取节点
- 节点位置
- 前驱
- 后继
- 插入
- 删除
- 插入头
- 插入尾
- 遍历
- 节点结构
- 数据域
- 指针域
- 函数
- 数据域结构
- 姓名
- 电话
- 函数
- 链表结构
附录:
链表头文件相关声明定义
List.h
#ifndef LIST_H
#define LIST_H #include "Node.h" class List
{
public:
List();
~List();
void ClearList();
bool ListEmpty();
int ListLength();
bool GetElem(int i, Node *pNode);
int LocateElem(Node *pNode);
bool PriorElem(Node *pCurrentNode, Node *pPreNode);
bool NextElem(Node *pCurrentNode, Node *pNextNode); bool ListInsert(int i, Node *pNode);
bool ListDelete(int i, Node *pNode);
bool ListInsertHead(Node *pNode);
bool ListInsertTail(Node *pNode); void ListTraverse(); private:
Node *m_pList;
int m_iLength;
}; #endif
节点头文件相关声明定义
Node.h
#ifndef NODE_H
#define NODE_H #include "Person.h"
class Node
{
public:
Person date;
Node *next;
void printNode();
}; #endif
数据域相关声明定义
Person.h
#ifndef PERSON_H
#define PERSON_H #include <string>
#include <ostream> using namespace std; class Person
{
friend ostream &operator<<(ostream &out, Person &person); //Global Function
public:
string name;
string phone; Person &operator=(Person &person);
bool operator==(Person &person);
}; #endif
通讯录链表实现之C++的更多相关文章
- C语言写郑州大学校友通讯录
#include <stdio.h> #include <string.h> #include <stdlib.h> #define LEN sizeof(stru ...
- 1.个人项目 Individual Project
https://github.com/sunlitao 一. 实验1通讯录管理系统 通讯录中的联系人包含以下信息项:姓名.手机.办公电话.家庭电话.电子邮箱.所在省市.工作单位.家庭住址,群组分类(亲 ...
- C语言通讯录系统——C语言单向链表实现
实现的通讯录功能有:查看通讯录.添加联系人.删除联系人.查询联系人.保存并退出. 通过txt文件保存和读取通讯录数据. #include <stdio.h> #include <st ...
- C实现通讯录管理系统(亮点:纯链表实现、子串匹配,文件读写)
题目:通讯录管理程序 问题描述 编写一个简单的通讯录管理程序.通讯录记录有姓名,地址(省.市(县).街道),电话号码,邮政编码等四项. 基本要求 程序应提供的基本基本管理功能有: 1) 添加:即增加一 ...
- C语言-《通讯录》
黑白的通讯录 --1-- 需求分析 1.1 需求 1.2 原型展示 1.3 功能分析 --2-- 代码实现 2.1 外部声明.变量.宏 2.2 模块实现 ----------------------- ...
- 数据结构之链表C语言实现以及使用场景分析
牢骚:本篇博客两个星期前已经存为草稿,鉴于发生一些糟糕的事情,今天才基本完成.本人6月份应届毕业生一枚,毕业后当天来到帝都,之后也非常顺利,面试了俩家公司都成功了.一家做C++方面电商ERP,一家做w ...
- 通讯录C++console application
#include<iostream> #include<fstream> #include<string> #include<cstring> #inc ...
- C语言通讯录管理系统
本文转载自:http://blog.csdn.net/hackbuteer1/article/details/6573488 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能. ...
- c语言小项目---通讯录2.0
自从上次通讯录项目被字符串项目整的自闭了之后,用了5天时间重新整理了一下通讯录的思路,并且能够正常的使用,今天按模块把基于链表的通讯录2.0版本记录一下,供后续积累经验. 首先总结一下 通讯录2.0版 ...
随机推荐
- hibernate,mybatis,beetlsql 全面比較
这是我的一个综合评分.总共分为12个单项.每一个单项最高5分.最低0分. 注意.评价仅仅包括这些软件提供的标准功能,不包括第三方提供的功能,如代码生成等. 开发效率 hibernate 能获取数据库 ...
- MySql中LongText字段对应Hibernate映射文件的设置(转)
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...
- mysql 数据库设计(转)
本规范适用于mysql 5.1或以上版本使用 数据库范式 第一范式(1NF)确保每列保持原子性 第一范式(1NF):数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项. ...
- Bloom Filter的应用
1.布隆过滤器是什么? 又快又小的处理方法 布隆过滤器(Bloom Filter):是一种空间效率极高的概率型算法和数据结构,用于判断一个元素是否在集合中(类似Hashset). 它的核心一个很长的二 ...
- android项目 之 记事本(13) ----- 查看图片及播放录音
本文是自己学习所做笔记,欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 今天就来实现下查看图片及录音的功能,在编辑或者浏览记事时,点击图片.打开一个自己 ...
- mongoDB 删除某一字段、重新名字段
批量删除字段: {multi:true}:查询到的所有记录都删除. db.collection_name.update({"target_field":{"$exists ...
- 倍福TwinCAT(贝福Beckhoff)基础教程2.0 TwinCAT常用快捷键
F5:运行程序 CTRL+F5:停止运行当前程序 F12:登出 F11:登录 CTRL+F7:强制写入数值 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.you ...
- 单点登录cas常见问题(四) - ticket有哪些存储方式?
配置文件ticketRegistry.xml负责配置ticket的存储方式,registry是注冊表,登记薄的意思 经常使用的存储方式包含 1.DefaultTicketRegistry:默认的.存储 ...
- shell定期转移日志文件到云盘并定期删除云盘文件
shell 脚本定期处理如下: cat /home/backup/logs_delete.sh #!/bin/bash /bin/find /data/logs/nginx/ -name " ...
- java统计中英文字数 Java问题通用解决代码
http://yangchao20020.blog.163.com/blog/static/483822472011111635424751/ 这个不适用于新浪微博字数的统计,结果有差别,若需要可 ...