#pragma once
template <typename T>
class Chain {
private:
T item;
Chain<T>* now = this;
Chain<T>* next;
Chain<T>* pre;
Chain<T>* end;
//this同时也是链表的开始
public:
//N为链表长度
static int N;
Chain() {}
void push(T a) {
if (!next)
{
now->item = a;
now->next = new Chain();
now->next->pre = now;
}
else
{
now->next = new Chain();
now->next->item = a;
now->next->pre = now;
now = now->next;
}
end = now;
N++;
}
T pop() {
now = end;
T temp = now->item;
if (now->pre)
{
now = now->pre;
now->next = nullptr;
delete now->next;
end = now;
}
else {
now = nullptr;
delete now;
}
N--;
return temp;
}
//按下表顺序删除特定元素
void deleteitem(int n) {
now = this;
int i = 0;
while (n != i++) now = now->next;
Chain* oldnext = now->next;
Chain* oldnow = now;
oldnow = nullptr;
now = now->pre;
oldnext->pre = now;
delete oldnow;
now->next = oldnext;
N--;
}
};
template <typename S>
int Chain<S>::N = 0;
C++链表实现
最新推荐文章于 2025-04-02 16:23:24 发布