C++实现简单的单链表,功能:创建单链表,遍历输出链表节点数据,删除整个链表,删除某个节点,插入节点。
值的说明的是,该链表头结点不存储数据,删除节点与加入接点均从头结点的next节点开始操作。
#include <iostream>
using namespace std;
struct Node
{
int data=0;
Node* next=NULL;
};
class LinkList
{
private:
int size;
Node* head;
public:
LinkList(int size)
{
head = new Node;
this->size = size;
}
Node* CreateLinkList(int size)
{
//Node* head = NULL;
Node* ptemp = this->head; //头结点data为0,表示不存数据。
for (int i = 0; i < size; i++)
{
ptemp->next = new Node;
ptemp = ptemp->next;
ptemp->data = i + 1;
}
return head;
}
void DisplayLinkList()
{
Node* temp = head;
while (temp != NULL)
{
cout << temp->data << endl;
temp = temp->next;
}
}
Node* BYELinkList()
{
Node* newptr = head;
while (head != NULL)
{
newptr = head->next;
delete(head);
head = newptr;
}
return head;
}
void InsertLinkList(Node* node, int n)
{
//头插
if (n < 2)
{
node->next = head->next;
head->next = node;
this->size++;
}
//中间插
if (n >= 2 && n < size)
{
Node* temp = head;
for (int i = 1; i < n; i++)
{
temp = temp->next;
}
node->next = temp->next;
temp->next = node;
this->size++;
}
//尾插
if (n >= size)
{
Node* temp = head;
for (int i = 1; i <= size; i++)
{
temp = temp->next;
}
temp->next = node;
this->size++;
}
}
void DeleteLinkList(int n)
{
//头删
if (n < 2)
{
Node* ptemp = head->next;
head->next = ptemp->next;
delete(ptemp);
}
//中间删
if (n >= 2 && n < size)
{
Node* ptemp = head;
for (int i = 1; i < n; i++)
{
ptemp = ptemp->next;
}
Node* pnew = ptemp->next;
ptemp->next = pnew->next;
delete(pnew);
}
//尾删
if (n >= size)
{
Node* ptemp = head;
for (int i = 1; i < size; i++)
{
ptemp = ptemp->next;
}
Node* pnew = ptemp->next;
ptemp->next = NULL;
delete pnew;
}
}
};
int main() {
int size=5;
LinkList* ptr = new LinkList(size);
Node* head = ptr->CreateLinkList(size); //创建链表
ptr->DisplayLinkList(); //展示链表
//Node* Deleted_head = ptr->BYELinkList(); //删除链表
Node* node = new Node();
node->data = 100;
ptr->InsertLinkList(node,3);
ptr->DisplayLinkList();
ptr->DeleteLinkList(6);
ptr->DisplayLinkList();
return 0;
}输出结果:
0 1 2 3 4 5
0 1 2 100 3 4 5
0 1 2 100 3 4
版权声明:本文为weixin_43504370原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。