实现了单项循环链表的头插,尾插,指定位置插入元素的方法;
实现了头删,尾删,指定位置删除元素的方法;
实现了获取链表长度方法;
实现了获取链表是否为空的方法;
实现了获取某个位置的元素的方法。
代码已编译通过并经过了测试,如果读者有发现问题,欢迎交流指正,感谢阅读。
#include <iostream>
struct CircleLinkList
{
int data;
CircleLinkList* next;
CircleLinkList(int val, CircleLinkList* next) : data(val), next(next){};
};
class CircleLink {
CircleLinkList* head;
int lenght;
public:
//无参数构造函数
inline CircleLink()
{
//新建一个头节点
head = new CircleLinkList(-1, nullptr);
//把头节点的下一个节点指向自己形成闭环
head->next = head;
//此时相当于链表中没有元素,-1代表头节点,对于其他类型的数据可以随即赋值
lenght = 0;
};
virtual ~CircleLink();
public:
//方法
int size()const;//获取长度
void clear();//清空链表元素
bool isEmpty();//链表是否为空
void getElement(int pos, int& elt)const;//获取pos位置处的元素
int insertElemment(int pos, int val);//在pos位置出插入一个元素
int deleteElement(int pos);//删除pos位置处的元素
void push_front(const int val);//在链表头部插入一个元素