📄 llist.cpp
字号:
#include "StdAfx.h"
#include "LList.h"
void List::make_list(void)//用于进行链表原始创建
{
head=new Node;
tail=new Node;
head->next_node=tail;
head->previous=NULL;
tail->previous=head;
tail->next_node=NULL;
SetNumberOfNode(0);
}
void List::show_list()
{
if (GetNumberOfNode()==0)
{
cout<<"链表为空!!"<<endl;
getchar();
return;
}
Node* current=head->next_node;//不能再从第一个节点开始显示
while(current->next_node!=tail)
{
cout<<current->key<<" ";
current=current->next_node;
}
cout<<current->key<<endl;
cout<<"链表中共有"<<GetNumberOfNode()<<"个元素!"<<endl;
}
void List::delete_list (int delete_value)//以前的程序没的遍历,只能看到第一个元素
{
if (GetNumberOfNode()==0)
{
cout<<"链表中没有元素!"<<endl;
getchar();
}
Node* current=head->next_node;
while(current!=tail)
{
if(current->key==delete_value)
{
if(current==head->next_node)
{
current->previous->next_node=current->next_node;
current->next_node->previous=head;
current->previous=NULL;
current->next_node=NULL;
free(current);
}
else if(current==tail->previous)
{
current->previous->next_node=tail;
current->next_node->previous=current->previous;
current->previous=NULL;
current->next_node=NULL;
free(current);
}
else
{
current->previous->next_node=current->next_node;
current->next_node->previous=current->previous;
current->previous=NULL;
current->next_node=NULL;
free(current);
}
break;//能删除元素的情况将遍历过程中止
}
current=current->next_node;
}
if(current==tail)
{
cout<<"您要删除的元素不存在!!"<<endl;
getchar();
return;
}
SetNumberOfNode(GetNumberOfNode()-1);
}
void List::insert_list(int insert_value)
{
Node* current;
current=head;
Node* new_node=new Node;//以前没有Node声明
new_node->key=insert_value;
while(current!=tail)//循环作用是找到插入点
{
/*if(current==head->next_node)
{
new_node->next_node=head->next_node;
new_node->previous=head;
head->next_node->previous=new_node;
head->next_node=new_node;
}
else if(current!=(head->next_node)&¤t!=(tail->previous))
{
new_node->next_node=current;
new_node->previous=current->previous;
current->previous->next_node=new_node;
current->previous=new_node;
}
if(current==tail->previous)
{
new_node->next_node=tail;
new_node->previous=current;
tail->previous->next_node=new_node;
tail->previous=new_node;
}*/
if (current==head)
{
current=current->next_node;
continue;
}
if (insert_value<=current->key)
{
break;
}
current=current->next_node;
}
//插入点为不小于自己的数之前,current指针之前进行插入
new_node->next_node=current;
current->previous->next_node=new_node;
new_node->previous=current->previous;
current->previous=new_node;
SetNumberOfNode(GetNumberOfNode()+1);
new_node=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -