📜  c++ 数据结构 - C++ (1)

📅  最后修改于: 2023-12-03 15:14:00.470000             🧑  作者: Mango

C++数据结构

数据结构是计算机科学中最重要的概念之一。它是关于数据组织、管理和存储的方法,以便有效地访问和修改数据。C++作为一门强大的编程语言,提供了许多不同的数据结构来满足不同的需求。

常见数据结构
数组(Array)

数组是一种线性数据结构,它是一组相同类型的元素的集合,可以通过索引访问各个元素。在C++中,可以使用std::array或原始数组来实现数组数据结构。下面是使用std::array实现数组的例子:

#include <array>
#include <iostream>

int main()
{
  std::array<int, 5> a{1, 2, 3, 4, 5};
  std::cout << "Size of array a: " << a.size() << '\n';
  std::cout << "Element at index 2: " << a[2] << '\n';

  return 0;
}

输出:

Size of array a: 5
Element at index 2: 3
链表(Linked List)

链表是一种非线性数据结构,它由一个个节点组成,每个节点包含了数据和指向下一个节点的指针。链表按照节点的顺序进行存储,每个节点的数据可以是任何类型。可以使用std::forward_list或自己实现链表来实现链表数据结构。下面是使用std::forward_list实现链表的例子:

#include <forward_list>
#include <iostream>

int main()
{
  std::forward_list<int> list{1, 2, 3, 4, 5};
  std::cout << "Element at front of list: " << list.front() << '\n';

  list.push_front(6);
  std::cout << "Element at front of list after push: " << list.front() << '\n';

  return 0;
}

输出:

Element at front of list: 1
Element at front of list after push: 6
栈(Stack)

栈是一种线性数据结构,它是一组按照后进先出(LIFO)方式存储的元素集合。可以使用std::stack或自己实现栈来实现栈数据结构。下面是使用std::stack实现栈的例子:

#include <iostream>
#include <stack>

int main()
{
  std::stack<int> s;
  s.push(1);
  s.push(2);
  s.push(3);

  std::cout << "Top element of stack: " << s.top() << '\n';

  s.pop();
  std::cout << "Top element of stack after pop: " << s.top() << '\n';

  return 0;
}

输出:

Top element of stack: 3
Top element of stack after pop: 2
队列(Queue)

队列是一种线性数据结构,它是一组按照先进先出(FIFO)方式存储的元素集合。可以使用std::queue或自己实现队列来实现队列数据结构。下面是使用std::queue实现队列的例子:

#include <iostream>
#include <queue>

int main()
{
  std::queue<int> q;
  q.push(1);
  q.push(2);
  q.push(3);

  std::cout << "Front element of queue: " << q.front() << '\n';

  q.pop();
  std::cout << "Front element of queue after pop: " << q.front() << '\n';

  return 0;
}

输出:

Front element of queue: 1
Front element of queue after pop: 2
哈希表(Hash Table)

哈希表是一种非线性数据结构,它是由一个集合、散列表和哈希函数构成的。哈希表使用哈希函数将元素的关键字映射到一个散列表的单元格中。可以使用std::unordered_map或手动实现哈希表来实现哈希表数据结构。下面是使用std::unordered_map实现哈希表的例子:

#include <iostream>
#include <unordered_map>

int main()
{
  std::unordered_map<std::string, int> map;
  map.insert({"one", 1});
  map.insert({"two", 2});

  std::cout << "Value of key 'one': " << map["one"] << '\n';

  return 0;
}

输出:

Value of key 'one': 1
总结

C++提供了许多不同的数据结构来满足不同的需求。一个好的程序员应该熟悉这些数据结构,以便选择最适合的数据结构来处理不同的问题。