#pragma once
#ifndef Node_hpp
#define Node_hpp
typedef double value_data;
class Node
{
public:
value_data Data;
Node *Next;
};
#endif
#pragma once
#include "node.hpp"
#include <iostream>
using namespace std;
class Circular_Linklist
{
public:
typedef double value_data;
Circular_Linklist();
Circular_Linklist &operator=(Circular_Linklist& s)
{
swap(Head_ptr, s.Head_ptr);
swap(Tail_ptr, s.Tail_ptr);
return *this;
}
void Clear_List();
void Print_List();
void Create_List(int n);
void Delete_ListHead();
~Circular_Linklist();
private:
Node *Head_ptr;
Node *Tail_ptr;
};
#include "Circular_Linklist.h"
#include <iostream>
Circular_Linklist::Circular_Linklist()
{
Head_ptr = new Node();
Head_ptr->Next = Head_ptr;
};
void Circular_Linklist::Clear_List()
{
Node *temp = Head_ptr;
while (temp!=Head_ptr)
{
Node *Delete = temp;
temp = temp->Next;
delete Delete;
Delete = NULL;
}
};
void Circular_Linklist::Print_List()
{
Node *temp = Head_ptr->Next;
while (temp != Head_ptr)
{
cout << temp->Data << "->";
temp = temp->Next;
}
cout << " NULL"<<endl;
};
void Circular_Linklist::Create_List(int n)
{
Node *pnew, *ptemp = Head_ptr;
int i = n;
while (n-- > 0) {
cout << "输入第" << i - n << "个结点值:";
pnew = new Node;
cin >> pnew->Data;
pnew->Next = Head_ptr;
ptemp->Next = pnew;
ptemp = pnew;
}
};
void Circular_Linklist::Delete_ListHead()
{
if (Head_ptr->Next == Head_ptr)
{
cout << "空链表" << endl;
}
else
{
Node *temp = Head_ptr->Next;
Node *pnew = temp;
if (temp != Head_ptr)
{
pnew = temp->Next;
Head_ptr->Next = pnew;
delete temp;
temp = pnew;
}
}
}
Circular_Linklist::~Circular_Linklist()
{
Clear_List();
};
#include "Circular_Linklist.h"
#include <iostream>
using namespace std;
int main()
{
Circular_Linklist c;
cout << " n为大于0的数" << endl;
c.Create_List(4);
c.Print_List();
c.Delete_ListHead();
c.Delete_ListHead();
c.Delete_ListHead();
c.Print_List();
system("pause");
return 0;
};
![在这里插入图片描述]()