⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linklist.cpp

📁 里面装有 5 个小程序
💻 CPP
字号:
//////////////////////////////////////////////////
/*
	程序功能:各个程序算法的实现
	开发人员:葛兴高
	开发日期:2003、11、19
	开发版本:1.0
*/
#include "LinkList.hpp"


LinkList::LinkList()
{
	head=tail=p=NULL;
}

void LinkList::inserthead(DataType &item)
{
	p=new ListNode(item,NULL);
	if(head==NULL)
	{
		tail=p;
	}
	p->next=head;
	head=p;
}
void LinkList::inserttail(DataType &item)
{
	p=new ListNode(item,NULL);
	if(tail==NULL)
	{
		head=p;
		tail=head;
	}
	else tail->next=p;
	tail=p;
};
void LinkList::insertafert(DataType &item)
{
	ListNode *TempNode;
	TempNode=new ListNode(item,NULL);

	if(p==NULL)
	{
		TempNode->next=head;
		if(head==NULL) tail=TempNode;
		head=TempNode;
		p=TempNode;
	}
	else
	{
		TempNode->next=p->next;
		p->next=TempNode;
	}
}
void LinkList::insertbefore(DataType &item)
{
	ListNode *TempNode,*s;

	TempNode=new ListNode(item,NULL);
	if(p==NULL||p==head)
	{
		TempNode->next=head;
		if(head==NULL)
			tail=TempNode;
		head=TempNode;
		p=TempNode;
	}
	else
	{
		s=head;
		while(s->next!=p)
		s=s->next;
		TempNode->next=p;
		s->next=TempNode;
	}
}
void LinkList::Delete(void)
{
	ListNode *TempNode;
	if(p==NULL) return ;
	else
		if((p==head)&&(head==tail))
			head=tail=NULL;
		else
			if(p==head)
				head=head->next;
			else
			{
			   TempNode=head;
			   while(TempNode->next!=p)
				   TempNode=TempNode->next;
			   if(TempNode==tail)
			   {
				   TempNode->next=NULL;
			       tail=TempNode;
			   }
			   else
				   TempNode->next=p->next;
			}
			ListNode* t=p;
			p=head;
			delete t;
			//p=NULL;
			return ;
}
void LinkList::reverse(void)
{
	ListNode *TempNode,*s;
	TempNode=head;
	head=NULL;     
	while(TempNode!=NULL)
	{
		s=TempNode->next;
		TempNode->next=head;
		head=TempNode;
        TempNode=s;
	}
}
void LinkList::print(void)
{
	ListNode *TempNode;
	TempNode=head;
	while(TempNode!=NULL)
	{
		cout<<TempNode->data;cout<<"\t";
        TempNode=TempNode->next;
	}
	if(p==NULL)
		cout<<"当前的链表为空"<<"\n";
}
LinkList::~LinkList(void)
{
	while(head!=NULL)
	{
		p=head;
		head=head->next;
		delete p;
	}
}
int LinkList::get_cur_data()
{
	ListNode* t;
	int count=1;
	t=head;
	while(p!=t)
	{
		t=t->next;
		count++;
	}
	cout<<"当前的指针指在的位置count="<<count<<"\n";
   return p->data;
}
void LinkList::IsEmpty()
{
	if(p==NULL) cout<<"链表已经为空\n";
	else cout<<"链表不为空\n";

}
		


	

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -