数据冒险之单链表(简易通信录)

来源:互联网 发布:win7网络图标变成灰色 编辑:程序博客网 时间:2024/04/29 15:03

Node和LIst的定义与实现基本不改变,上篇已经详细给出,这里仅仅将部分改变的内容粘贴出来,要想完整实现通信录还需要把Node.h、Node.cpp、List.h、List.cpp补充完整,也可发挥自己创造实现一些新的东西。

Node.h  这里只是数据类型发生了变化

#ifndef NODE_H#define NODE_H#include"Person.h"class Node{public://int data;        //现在是Person类型,这里int注释掉Person data;Node *next;void printNode();};#endif 

Node.cpp见上篇,没什么改变

List.cpp  也只是由于数据类型发生变化所以赋值操作需要注释掉重载,其他的均不改变

#include<iostream>#include"List.h"using namespace std;List::List(){m_pList = new Node;//m_pList->data = 0;   //现在是Person类型,需要赋值运算符重载m_pList->next = NULL;m_iLength = 0;}
Person.h 

#ifndef PERSON_H#define PERSON_H#include<string>#include<ostream>using namespace std;class Person{friend ostream &operator<<(ostream &out, Person &person);public:string name;string phone;//赋值运算符重载Person&operator=(Person &person);//判等运算符重载bool operator==(Person &person);};#endif

Person.cpp

#include"Person.h"#include<iostream>using namespace std;ostream &operator<<(ostream &out, Person &person){out << person.name << "-------" << person.phone << endl;return out;}//赋值运算符重载Person &Person::operator = (Person &person){this->name = person.name;this->phone = person.phone;return *this;}//判等运算符重载bool Person::operator==(Person &person){if (this->name == person.name && this->phone == person.phone){return true;}}

main.cpp

#include<iostream>#include"List.h" using namespace std;//菜单函数int menu(){//显示菜单cout << "功能菜单" << endl;cout << "1.新建联系人" << endl;cout << "2.删除联系人" << endl;cout << "3.浏览通信录" << endl;cout << "4.退出通信录" << endl;cout << "请输入:";int order = 0;cin >> order;return order;}//新建联系人void createPerson(List* pList){Node node;cout << "请输入姓名:";cin >> node.data.name;cout << "请输入电话:";cin >> node.data.phone;//两种方式都可以/*Person person;cout << "请输入姓名:";cin >> person.name;cout << "请输入电话:";cin >> person.phone;node.data = person;*/pList->ListInsertTail(&node);}//删除联系人void deletePerson(List* pList){Node node;int i = 0;cout << "请输入所要删除联系人编号:";cin >> i;cout << "已经删除第" << i << "个联系人!" << endl;pList->ListDelete(i-1, &node);cout << "删除联系的姓名是:" << node.data.name << endl;cout << "删除联系的电话是:" << node.data.phone << endl;}int main(void){int userOder = 0;List *pList = new List();while (userOder!=4){userOder = menu();switch (userOder){case 1:cout << "用户指令---->>新建联系人:" << endl;createPerson(pList);break;case 2:cout << "用户指令---->>删除联系人:" << endl;deletePerson(pList);break;case 3:cout << "用户指令---->>浏览通信录:" << endl;pList->ListTraverse();break;case 4:cout << "用户指令---->>退出通信录:" << endl;break;default:break;}}delete pList;pList = NULL;return 0;}


原创粉丝点击