双向链表

鄙人虽然学过数据结构,无奈上课划水实验不好好做。兹此暑假决心痛改前非,重新实现一遍书上的代码,这次实现的是双链表,只是大概地实现了某些功能,如有错误欢迎批评加粗样式斧正

#include
#include

class node {
public:
int val;
node* pre;
node* next;
node(const int i, node* a, node* b) {
val = i;
pre = a;
next = b;
}
node(node* a = NULL, node* b = NULL) {
pre = a;
next = b;
}
};

class list:public node {
private:
node* head; node* tail; node* cur;
public:
list() {
cur = tail = head = new node;
}
~list() {
while (head != NULL)
{
cur = head;
head = head->next;
delete cur;
}
}
void Create(int n);
void Prev();
void Next();
void Insert(const int a);
void delet();
void print();
};
void list::Create(int n) {
node* t = new node;
head = t;
for (int i = 0; i < n; i++)
{
std::cin >> t->val;
node* p = new node;
t->next = p;
p->pre = t;
p->next = NULL;
t = p;
}
tail = t;
std::cin >> t->val;
}
void list::Prev() {
cur = cur->pre;
}
void list::Next() {
cur = cur->next;
}
void list::Insert(const int a) {
node* p,q;
q = cur->next;
q->pre = cur;
p =new node(a, cur, q);
cur->next = p;
q->pre = p;
}
void list::delet() {
node
p = cur;
cur->pre->next = cur->next;
cur->next->pre = cur->pre;
cur = cur->next;
delete p;
}
void list::print() {
node* p = head;
while (p != tail)
{
std::cout << p->val << std::endl; p = p->next;
}
std::cout << tail->val;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值