C++实现简单的单链表
2014-06-06 16:56
323 查看
下面实现的是一个简单的单链表
功能不多,学习使用
功能不多,学习使用
#pragma once #include <iostream> using namespace std; class ListEx { private: struct Node { Node* next; int data; Node(const Node& node): data(node.data), next(nullptr) {} Node(const T& d): data(d), next(nullptr) {} }; private: Node* head; int n; //索引 public: ListEx(): head(nullptr), n(0) {} Node* getp(int pos) { if (pos < 0 || pos > n) { return nullptr; } if (pos == 0) { return head; } Node* p = head; for (int i = 1; i < pos; i++) { p = p->next; } return p->next; } void travel() { Node* p = head; if (p == nullptr) { return; } p = p->next; while (p) { cout << p->data << "\t" << endl; p = p->next; } } void insert(int d, int pos = -1) { if (head == nullptr) { head = new Node(0); Node* p = new Node(d); head->next = p; p->next = nullptr; } //添加到最后 else if (pos < 0 || pos > n) { Node* p = getp(n); Node* node = new Node(d); p->next = node; node = nullptr; } //添加到pos位置 else { Node* node = new Node(d); Node* p = getp(n - 1); Node* q = p->next; p->next = node; node->next = q; } ++n; } //从pos开始查找data 为d的元素,默认从0开始 int find(int d, int pos = 0) { Node* p = getp(pos); if (p == nullptr) { return -1; } while (p) { if (p->data == d) { return pos; } pos++; p = p->next; } return -1; } //从pos开始删除data为d的元素 bool erase(int d, int pos = 0) { int nIndex = find(d, pos); if (nIndex == -1) { return false; } Node* p = getp(nIndex - 1); Node* q = getp(nIndex); if (p == nullptr) { return false; } p->next = q->next; delete q; return true; } };
相关文章推荐
- 简单双向链表(C++模版技术实现)
- 简单单链表C++实现
- C++实现简单的双向链表
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
- C++中实现一个简单的单向链表
- 用c++实现简单的单向链表
- 简单数据结构之循环链表(C++实现)
- C++单项链表的构造及简单功能的实现
- 一个简单链表的C++实现
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- 简单单向链表(C++模版技术实现)
- C++实现简单链表
- c++链表简单实现
- 链表简单实现,排列数(C++)
- c++简单链表实现
- C++链表结构简单实现
- (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- C++模板实现的简单单链表
- [C++] 模板类实现简单链表