链表的插入删除和查找_C++实现

链表的插入删除和查找_C++实现

郑州的雨似乎没停过
连着下了有半个月了吧
现在穿短袖都很冷
不知道是不是真的要入秋了

今天把严蔚敏老师的数据结构视频看完了
下面开始进入实践阶段
下午抽了一段时间
把链表的插入删除和查找用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;
		}
	}
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注