408【数据结构】单链表_类模板_API模块

单链表

编译环境

底层封装了一个带头结点的单链表,模板类,以后习题都采用此数据结构实现


API

LinkList(std::initializer_list<T> li) 	//初始化构造单链表

void push(U val) 						//插入元素(头插法)

void pop() //删除元素

pointer_type erease(pointer_type p) //删除传入指针的元素

pointer_type erease(pointer_type beg, pointer_type end) //删除传入指针范围的元素

reference front() //返回头元素

const_reference front() const //返回头元素

value_type back(size_type k) const //返回尾部第k个元素

pointer_type backPtr(size_type k) //返回尾部第k个指针

bool empty() const //判断链表是否为空

size_type size() const //返回元素个数

void reverse() //逆置整个单链表

void reverse(Node<U>* beg) //逆置传入指针到表尾

void reverse(Node<U>* beg, Node<U>* end) //逆置传入指针范围的元素

pointer_type find(value_type val) //返回值为 val 的指针

void sort() //链表排序,默认升序

pointer_type headNode() //返回头结点

const_pointer_type headNode() const //返回头结点

pointer_type midPtr() //返回中间元素的指针

void swap(Node<U>* x) //交换两个单链表

void link(Node<U>* x) //将当前单链表链接到 x,测试使用
初始化列表创建
void test() {
    LinkList<int> li1 {1,3,5,114514,9,7,45};
    auto* p = li1.headNode()->next;
    while(p) {
        cout << p->data << " ";
        p = p->next;
    }
}
push, headNode
void test() {
    LinkList<int> li1;
    for(int i = 0; i != 10; ++i)
        li1.push(i);
    auto* p = li1.headNode()->next;
    while(p) {
        cout << p->data << " ";
        p = p->next;
    }
}
pop, empty, front
void test() {
    LinkList<int> li1;
    for(int i = 0; i != 10; ++i)
        li1.push(i);
    while(!li1.empty()) {
        cout << li1.front() << " ";
        li1.pop();
    }
}
reverse, back
void test() {
    LinkList<int> li1 {0,1,3,5,1245,4657,8521};
    li1.reverse();
    cout << li1.back(1) << "\n";
    cout << li1.back(0) << "\n";
    // auto* p = li1.headNode()->next;
    // while(p) {
    //     cout << p->data << " ";
    //     p = p->next;
    // }
}
size, midPtr, erease
void test() {
    LinkList<int> li1 {0,1,3,5,1245,4657,8521};
    cout << li1.size() << "\n";
    auto* p = li1.midPtr();
    li1.erease(p);
    cout << li1.size() << "\n";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值