链表的插入删除和查找_C++实现
2011-09-11 17:02
507 查看
郑州的雨似乎没停过
连着下了有半个月了吧
现在穿短袖都很冷
不知道是不是真的要入秋了
今天把严蔚敏老师的数据结构视频看完了
下面开始进入实践阶段
下午抽了一段时间
把链表的插入删除和查找用C++实现了
插入删除和查找等操作都已封装在DATA类里了
这里插播点其他的
其实我一直对面向对象的概念很模糊
直到看了孙新老师的视频才恍然大悟
孙老师当时举了一个例子
说设计使用一辆车的时候
如果采用面向过程的思想就是传过来一个参数
然后用户设计如何使用这辆车
而如果是采用面向对象的思想
在设计这辆车的时候
就会把有关车的各种操作变成这辆车的固有属性
然后用户调用车本身的功能来实现这辆车的使用
一点浅薄的见解
纰漏百出
见笑
上代码
"head.h"
"***.cpp"
连着下了有半个月了吧
现在穿短袖都很冷
不知道是不是真的要入秋了
今天把严蔚敏老师的数据结构视频看完了
下面开始进入实践阶段
下午抽了一段时间
把链表的插入删除和查找用C++实现了
插入删除和查找等操作都已封装在DATA类里了
这里插播点其他的
其实我一直对面向对象的概念很模糊
直到看了孙新老师的视频才恍然大悟
孙老师当时举了一个例子
说设计使用一辆车的时候
如果采用面向过程的思想就是传过来一个参数
然后用户设计如何使用这辆车
而如果是采用面向对象的思想
在设计这辆车的时候
就会把有关车的各种操作变成这辆车的固有属性
然后用户调用车本身的功能来实现这辆车的使用
一点浅薄的见解
纰漏百出
见笑
上代码
"head.h"
#include<iostream> using namespace std; class ATOM { public: ATOM(){num=0;next=NULL;} public: int num; ATOM *next; }; class DATA { public: DATA(){head=p0=p1=NULL;} void Insert(); void Delete(); void Search(); void Print(); private: ATOM *head,*p0,*p1; int n; }; void DATA::Insert() { cout<<"Insert Called !"<<endl<<endl; cout<<"Please Enter The Num You Want To Insert :"<<endl<<endl; cin>>n; cout<<endl; if(head==NULL) { head=new ATOM; head->num = n; head->next =NULL; } else { p0=p1=head; while(p1!=NULL&&n>p1->num) { p0=p1; p1=p1->next; } if(p1==NULL) { p1=new ATOM; p0->next=p1; p1->num=n; p1->next=NULL; } else { if(p1==head) { head=new ATOM; head->num=n; head->next=p1; } else { p0->next=new ATOM; p0=p0->next; p0->num=n; p0->next=p1; } } } } void DATA::Delete() { cout<<"Delete Called !"<<endl<<endl; if(head==NULL) { cout<<"Error ! No data ! "<<endl<<endl; } else { cout<<"Please Enter The Num You Want To Delete :"<<endl<<endl; cin>>n; p0=p1=head; while(p1!=NULL&&p1->num!=n) { p0=p1; p1=p1->next; } if(p1==NULL) { cout<<"Not found !"<<endl<<endl; } else { if(p1==head) { p0=head; head=head->next; delete p0; } else { p0->next=p1->next; delete p1; } } } } void DATA::Search() { cout<<"Search Called !"<<endl<<endl; p1=head; if(p1==NULL) { cout<<"Error ! No Data !"<<endl<<endl; } else { cout<<"Please Enter The Num You Want To Search :"<<endl<<endl; cin>>n; while(p1!=NULL&&p1->num!=n) { p1=p1->next; } if(p1==NULL) { cout<<"Not Found !"<<endl<<endl; } else { cout<<"Found !"<<endl<<endl; } } } void DATA::Print() { cout<<"Print Called !"<<endl<<endl; if(head==NULL) { cout<<"Error ! No Data !"<<endl<<endl; } else { p1=head; while(p1!=NULL) { cout<<p1->num<<endl; p1=p1->next; } cout<<endl; } }
"***.cpp"
#include<iostream> #include "head.h" using namespace std; int main() { DATA data; while(1) { cout<<"Your Choice , Please :"<<endl<<endl; cout<<"1 : Insert"<<endl <<"2 : Delete"<<endl <<"3 : Search"<<endl <<"4 : Print"<<endl <<"5 : Quit" <<endl<<endl; int choice; cin>>choice; switch(choice) { case 1: data.Insert(); break; case 2: data.Delete(); break; case 3: data.Search(); break; case 4: data.Print(); break; case 5: return 0; default: cout<<"Sorry , Please Enter The Right Choice As Shown Above ..."<<endl; break; } } }
相关文章推荐
- C++链表的创建、插入、删除、查找、合并、排序、修改等操作的实现
- c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- C++实现B-树插入删除查找
- C++实现双向链表的创建,插入,修改,删除
- C++实现二叉排序树BSTree --插入删除摧毁查找等操作
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 动态链表的创建、插入、查找、删除的C++实现
- 用c++实现单向链表的创建,插入和删除
- 二叉排序树的建立、插入、删除、查找、比较、4种遍历方式的C++完整实现版
- C++实现链表的创建、插入、删除
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 链表(单双链表)用法与基本操作(构建、查找、插入、删除)实现
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 链表的相关操作查找插入删除(c++ 数据结构)
- 单链表基本操作的实现--创建、插入、查找、删除
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 单链表的顺序插入、删除、查找/code/c&c++