#include using namespace std;

// 实现链表增删查改 template class Linklist { template friend ostream &operator<<(ostream &out, Linklist &ra);

private: T m_data; Linklist *m_next;

public: Linklist(T data = 0); ~Linklist(); void List_add(T const &ra); void List_del(T &ra); T *List_find(T &ra); void List_change(T &ra, T &rb); };

template Linklist::Linklist(T data) { m_data = data; m_next = NULL; }

template Linklist::~Linklist() { delete m_next; }

template void Linklist::List_add(T const &ra) { Linklist *newl = new Linklist(ra); Linklist *cur = this; if (cur->m_next == NULL || ra <= cur->m_next->m_data) { newl->m_next = cur->m_next; cur->m_next = newl; return; } while (cur->m_next != NULL) { if (ra <= cur->m_next->m_data) { newl->m_next = cur->m_next; cur->m_next = newl; return; } cur = cur->m_next; } cur->m_next = newl; }

template void Linklist::List_del(T &ra) { Linklist *cur = this; while (cur->m_next != NULL) { if (cur->m_next->m_data == ra) { Linklist *temp = cur->m_next; cur->m_next = cur->m_next->m_next; delete temp; return; } cur = cur->m_next; } }

template T *Linklist::List_find(T &ra) { Linklist *cur = this; while (cur != NULL) { if (cur->m_data == ra) { return &(cur->m_data); } cur = cur->m_next; } return NULL; }

template void Linklist::List_change(T &ra, T &rb) { Linklist *cur = this; while (cur != NULL) { if (cur->m_data == ra) { cur->m_data = rb; return; } cur = cur->m_next; } }

template ostream &operator<<(ostream &out, Linklist &ra) { Linklist *cur = &ra; while (cur != NULL) { out << cur->m_data << ' '; cur = cur->m_next; } return out; }

// 实现按数据域内容排序的链表功能,在List_add()函数中进行修改 //...

// 以下为新增代码 //...

// 修改后的List_add()函数,实现有序插入 /* template void Linklist::List_add(T const &ra) { Linklist *newl = new Linklist(ra); Linklist *cur = this; if (cur->m_next == NULL || ra <= cur->m_next->m_data) { newl->m_next = cur->m_next; cur->m_next = newl; return; } while (cur->m_next != NULL) { if (ra <= cur->m_next->m_data) { newl->m_next = cur->m_next; cur->m_next = newl; return; } cur = cur->m_next; } cur->m_next = newl; } */ //...

C++ 链表实现及排序功能:增删查改与有序插入

原文地址: https://www.cveoy.top/t/topic/bR2Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录