当前位置: 首页 > wzjs >正文

企业网站建设基本流程seo外链资源

企业网站建设基本流程,seo外链资源,如何做网页设计视频播放,用php做网站的方法在C中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。C标准库(STL)中提供了std::list和std::forward_list两种链表实现,分别对应双向链表和单向链表。此外&am…

在C++中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。C++标准库(STL)中提供了std::liststd::forward_list两种链表实现,分别对应双向链表和单向链表。此外,也可以通过手动实现链表来加深对链表的理解。

1. C++标准库中的链表

(1)std::list(双向链表)

std::list是C++标准库中的双向链表实现,每个节点包含指向前一个节点和后一个节点的指针。它支持高效的插入和删除操作,但随机访问效率较低。

  • 基本操作

    #include <iostream>
    #include <list>int main() {std::list<int> myList;// 插入元素myList.push_back(10); // 在链表尾部插入myList.push_front(20); // 在链表头部插入myList.insert(myList.begin() + 1, 30); // 在指定位置插入// 遍历链表for (int value : myList) {std::cout << value << " ";}std::cout << std::endl;// 删除元素myList.pop_back(); // 删除尾部元素myList.pop_front(); // 删除头部元素myList.erase(myList.begin() + 1); // 删除指定位置的元素// 遍历链表for (int value : myList) {std::cout << value << " ";}std::cout << std::endl;return 0;
    }
(2)std::forward_list(单向链表)

std::forward_list是C++11引入的单向链表实现,每个节点只包含指向下一个节点的指针。它比std::list更轻量,但只能单向遍历。

  • 基本操作

    #include <iostream>
    #include <forward_list>int main() {std::forward_list<int> myList;// 插入元素myList.push_front(10); // 在链表头部插入myList.push_front(20);myList.insert_after(myList.begin(), 30); // 在指定位置插入// 遍历链表for (int value : myList) {std::cout << value << " ";}std::cout << std::endl;// 删除元素myList.pop_front(); // 删除头部元素myList.erase_after(myList.begin()); // 删除指定位置的元素// 遍历链表for (int value : myList) {std::cout << value << " ";}std::cout << std::endl;return 0;
    }

2. 手动实现链表

手动实现链表可以帮助更好地理解链表的内部机制。以下是单向链表和双向链表的基本实现。

(1)单向链表
#include <iostream>// 定义链表节点
struct Node {int data;Node* next;Node(int value) : data(value), next(nullptr) {}
};// 定义链表类
class LinkedList {
private:Node* head;public:LinkedList() : head(nullptr) {}// 插入元素到链表尾部void append(int value) {Node* newNode = new Node(value);if (head == nullptr) {head = newNode;} else {Node* current = head;while (current->next != nullptr) {current = current->next;}current->next = newNode;}}// 插入元素到链表头部void prepend(int value) {Node* newNode = new Node(value);newNode->next = head;head = newNode;}// 删除元素void remove(int value) {if (head == nullptr) return;if (head->data == value) {Node* temp = head;head = head->next;delete temp;return;}Node* current = head;while (current->next != nullptr && current->next->data != value) {current = current->next;}if (current->next != nullptr) {Node* temp = current->next;current->next = temp->next;delete temp;}}// 遍历链表void print() const {Node* current = head;while (current != nullptr) {std::cout << current->data << " ";current = current->next;}std::cout << std::endl;}// 析构函数,释放链表内存~LinkedList() {Node* current = head;while (current != nullptr) {Node* temp = current;current = current->next;delete temp;}}
};int main() {LinkedList list;list.append(10);list.append(20);list.prepend(5);list.print(); // 输出:5 10 20list.remove(10);list.print(); // 输出:5 20return 0;
}
(2)双向链表
#include <iostream>// 定义链表节点
struct Node {int data;Node* next;Node* prev;Node(int value) : data(value), next(nullptr), prev(nullptr) {}
};// 定义链表类
class DoublyLinkedList {
private:Node* head;Node* tail;public:DoublyLinkedList() : head(nullptr), tail(nullptr) {}// 插入元素到链表尾部void append(int value) {Node* newNode = new Node(value);if (head == nullptr) {head = newNode;tail = newNode;} else {tail->next = newNode;newNode->prev = tail;tail = newNode;}}// 插入元素到链表头部void prepend(int value) {Node* newNode = new Node(value);if (head == nullptr) {head = newNode;tail = newNode;} else {newNode->next = head;head->prev = newNode;head = newNode;}}// 删除元素void remove(int value) {Node* current = head;while (current != nullptr && current->data != value) {current = current->next;}if (current == nullptr) return;if (current->prev != nullptr) {current->prev->next = current->next;} else {head = current->next;}if (current->next != nullptr) {current->next->prev = current->prev;} else {tail = current->prev;}delete current;}// 遍历链表void print() const {Node* current = head;while (current != nullptr) {std::cout << current->data << " ";current = current->next;}std::cout << std::endl;}// 析构函数,释放链表内存~DoublyLinkedList() {Node* current = head;while (current != nullptr) {Node* temp = current;current = current->next;delete temp;}}
};int main() {DoublyLinkedList list;list.append(10);list.append(20);list.prepend(5);list.print(); // 输出:5 10 20list.remove(10);list.print(); // 输出:5 20return 0;
}

总结

  • 标准库链表std::liststd::forward_list提供了丰富的功能和高效的插入删除操作,适合大多数应用场景。

  • 手动实现链表:通过手动实现链表,可以加深对链表内部机制的理解,例如节点的创建、插入、删除和内存管理等。

http://www.dtcms.com/wzjs/425848.html

相关文章:

  • 9i网站建设网络营销师证书有用吗
  • 网站设计模板 英文翻译长春网站建设团队
  • django网站开发论文十大营销策划公司排名
  • 天津外包加工网深圳关键词优化公司哪家好
  • 建设淘宝网站需要多少钱湛江seo推广外包
  • 曲阜做网站的公司百度网盘客服人工电话95188
  • 杭州网站运营短视频搜索seo
  • 淡水网站建设公司网页优化包括什么
  • 互联网招聘网站网络营销有几种方式
  • wordpress 单本小说站网站推广是什么
  • 营销型网站的建设流程图seo软件资源
  • 成都网站建设好的公司大连seo按天付费
  • 做网站图标企业查询软件
  • 网站开发流程分析企业网站推广渠道有哪些
  • 做外汇需要关注哪几个网站宁波seo教程推广平台
  • Wordpress网站删除多余主题百度搜索推广采取
  • 做网站用php如何学习推广注册app赚钱平台
  • 英文互动网站建设搜索关键词热度
  • 河南做网站送记账seo管理是什么
  • wordpress 特效代码网站的seo
  • 杭州做网站电话开源cms建站系统
  • 企业展厅装修seo研究协会
  • 银行的网站怎么做优化seo软件
  • vs2013做简单的网站学生没钱怎么开网店
  • 辽宁省住房建设厅网站深圳网络营销推广
  • 已备案网站新增接入上海抖音seo
  • 做业务 哪个网站比较好常州百度搜索优化
  • 常州建设局网站首页网络营销推广方案3篇
  • 网站备案完成后免费的网络推广渠道
  • 做网站需要多少费用厦门百度seo