基于链表实现一个简单通讯录功能
2018-01-30 19:06
856 查看
#include<iostream> #include<stdlib.h> using namespace std; class Node { private: string name;; long tel; public: Node *next; Node() { } Node(string n,long t) { this->name = n; this->tel = t; } void setName(string name) { this->name=name; } void setTel(long tel) { this->tel = tel; } string getName() { return this->name; } long getTel() { return this->tel; } }; Node* initialize() { Node *head = new Node(); Node *last = new Node(); head->next = last; last->next=NULL; last = NULL; return head; } //以下是增加记录的函数 void add(Node *h,string name,long tel ) { Node *addone = new Node(name,tel); addone->next = h->next; h->next = addone; addone = NULL; } //以下是查询函数 Node * seek(Node *h,string name,long tel)//一定要注意此处将头指针作为参数传入,在函数的操作过程中,一定要保证头指针的位置不发生任何改变! { Node *result=h; while(result) { if((result->getName()==name)&&(result->getTel()==tel)) { return result; } result = result->next; } return result; } //当查询的结果存在的时候,返回的result指针应该指向某一个节点,若查询结果不存在,result的指针值应该为NULL。 //以下是一个删除函数,但是目前删除函数依然有问题,发生内存错误 void remove(Node *h,string name,long tel) { Node *p,*q; p = h; while(p->next != NULL) { if((p->next->getName()==name) &&(p->next->getTel()==tel) ) { break; }//将指针p定位到要删除节点的前一个节点 else { p=p->next; } } q = p->next; if(q) { p->next = q->next; free(q); } if(!seek(h,name,tel)) cout<<"删除成功"<<endl; else cout<<"删除失败"<<endl; } //以下是对指定位置元素的数据进行修改 void update(Node *h,string name,long tel,string newname,long newtel) { Node* row = seek(h,name,tel); row->setName(newname); row->setTel(tel); cout<<"修改过程执行完毕!"<<endl; row=NULL; } int main(void) { //主函数的功能只做测试使用,可以根据需要自己定制功能选择菜单。 //下一个版本会在基于文件操作的基础上,使用链表做一个通讯录 Node* head = initialize(); add(head,"stuA",159); if(seek(head,"stuA",159)) cout<<"查询成功"<<endl; update(head,"stuA",159,"stuB",135); remove(head,"stuB",1350); return 0; }
由于只是为了检验一下对链表的掌握,所以功能比较简单,但还是具有基本的链表的特点的,仅作参考吧。确实东西不复杂,就是回忆一下有关知识。
相关文章推荐
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- 自己写了一个链表功能还不完善但是简单的增删改查功能都已经实现了
- 基于PHP实现一个简单的在线聊天功能
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- linux网络编程二十一:利用SIGALRM信号,实现一个简单的基于升序链表的定时器
- 基于 链表 实现通讯录的功能
- 【Android2D游戏开发十六】(上文之触摸屏手势)详解Android Gesture 手势操作!利用手势实现一个简单切换图片的功能!
- Castle AOP 系列(四):实现一个简单的基于上下文调用的权限校验机制
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- C#实现一个功能简单的web浏览器
- 转载的标准文档:C语言实现一个简单的单向链表list
- WPF学习——制作一个简单的录入界面(2):用C#编程实现所有控件的功能
- 基于OpenCascade的简单CAD功能实现
- 在spark上实现了一个简单的功能
- 用链表实现一个通讯录
- 三分钟实现一个插件平台和一个插件——基于最简单的OSGi.NET插件框架
- C语言实现一个简单的单向链表list
- C语言实现一个简单的单向链表list
- 一个简单的链表的实现