通訊錄鏈表實現之C++


前言

在mooc上學習了鏈表中的順序表和單鏈表,並使用單鏈表數據結構跟着老師完成通訊錄創建。通過這次鏈表練習使用,做一些總結。

自頂向下設計探索。

功能需求

在功能實現上,通訊錄主要包括,創建聯系人,刪除聯系人,顯示聯系人,退出通訊錄。

通訊錄

  1. 創建聯系人
    1. 聯系人信息
    2. 插入到存儲結構中
  2. 刪除聯系人
    1. 獲取刪除聯系人編號
    2. 刪除聯系人
  3. 顯示聯系人
    1. 遍歷存儲結構
  4. 退出通訊錄
    1. 退出控制台

 

軟件設計

  1. 模塊划分
    1. 主控模塊(主函數)
    2. 命令讀取模塊
    3. 命令解析模塊
    4. 命令處理模塊
  2. 結構划分
    1. 鏈表結構
      1. 構建函數
      2. 析構函數
      3. 清空
      4. is空
      5. 長度
      6. 獲取節點
      7. 節點位置
      8. 前驅
      9. 后繼
      10. 插入
      11. 刪除
      12. 插入頭
      13. 插入尾
      14. 遍歷
    2. 節點結構
      1. 數據域
      2. 指針域
      3. 函數
    3. 數據域結構
      1. 姓名
      2. 電話
      3. 函數

 

 

附錄:


鏈表頭文件相關聲明定義

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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM