21xrx.com
2024-12-22 21:58:52 Sunday
登录
文章检索 我的文章 写文章
C++数据结构示例代码
2023-07-04 20:38:28 深夜i     --     --
C++ 数据结构 示例代码 程序设计 编程语言

C++是一种流行的编程语言,被广泛用于开发高效、稳定的应用程序。其中数据结构是C++中一个非常重要的领域。为了帮助大家更好地了解C++数据结构的实现方式,下面将给出一些示例代码。

1. 数组

数组是一种最简单的数据结构类型,它由连续的存储单元组成。以下是一个创建数组和遍历数组的示例代码:


#include <iostream>

using namespace std;

int main() {

  int arr[5] = 10;

  for (int i = 0; i < 5; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

2. 链表

链表是一种线性数据结构,它是由一系列节点组成的,每个节点包含两个部分:数据和指向下一个节点的指针。以下是一个创建链表并插入元素的示例代码:


#include <iostream>

using namespace std;

struct Node {

  int data;

  Node* next;

};

void insertHead(Node* &head, int val) {

  Node* newNode = new Node;

  newNode->data = val;

  newNode->next = head;

  head = newNode;

}

int main() {

  Node* head = NULL;

  insertHead(head, 10);

  insertHead(head, 20);

  insertHead(head, 30);

  Node* current = head;

  while (current != NULL)

    cout << current->data << " ";

    current = current->next;

  

  return 0;

}

3. 栈和队列

栈和队列是常用的数据结构类型,它们同时具有插入和删除元素的功能,但两种数据结构的插入和删除方式有所不同。

栈是后进先出(LIFO)的数据结构,插入元素时需要把元素插入栈顶,取出元素时需要从栈顶取出。下面是一个创建栈并执行插入和删除操作的示例代码:


#include <iostream>

#define MAX_SIZE 100

using namespace std;

int stack[MAX_SIZE];

int top = -1;

void push(int val) {

  if (top < MAX_SIZE - 1) {

    top++;

    stack[top] = val;

  }

}

bool isEmpty()

  return top == -1;

int pop() {

  if (!isEmpty()) {

    int val = stack[top];

    top--;

    return val;

  }

  else

    return -1;

  

}

int main() {

  push(10);

  push(20);

  push(30);

  while (!isEmpty()) {

    cout << pop() << " ";

  }

  return 0;

}

队列是先进先出(FIFO)的数据结构,插入元素时需要把元素插入队尾,取出元素时需要从队首取出。以下是一个创建队列并执行插入和删除操作的示例代码:


#include <iostream>

#define MAX_SIZE 100

using namespace std;

int queue[MAX_SIZE];

int front = 0, rear = -1;

bool isEmpty()

  return front > rear;

void enqueue(int val) {

  if (rear < MAX_SIZE - 1) {

    rear++;

    queue[rear] = val;

  }

}

int dequeue() {

  if (!isEmpty()) {

    int val = queue[front];

    front++;

    return val;

  }

  else

    return -1;

  

}

int main() {

  enqueue(10);

  enqueue(20);

  enqueue(30);

  while (!isEmpty()) {

    cout << dequeue() << " ";

  }

  return 0;

}

4. 树

树是一种非线性数据结构,它由一系列节点组成,每个节点可以有多个子节点。以下是一个创建二叉树并遍历的示例代码:


#include <iostream>

using namespace std;

struct Node {

  int data;

  Node* left;

  Node* right;

};

Node* createNode(int val) {

  Node* newNode = new Node;

  newNode->data = val;

  newNode->left = NULL;

  newNode->right = NULL;

  return newNode;

}

void preorder(Node* node) {

  if (node != NULL) {

    cout << node->data << " ";

    preorder(node->left);

    preorder(node->right);

  }

}

void inorder(Node* node) {

  if (node != NULL) {

    inorder(node->left);

    cout << node->data << " ";

    inorder(node->right);

  }

}

void postorder(Node* node) {

  if (node != NULL) {

    postorder(node->left);

    postorder(node->right);

    cout << node->data << " ";

  }

}

int main() {

  Node* root = createNode(1);

  root->left = createNode(2);

  root->right = createNode(3);

  root->left->left = createNode(4);

  root->left->right = createNode(5);

  cout << "Preorder traversal: ";

  preorder(root);

  cout << endl;

  cout << "Inorder traversal: ";

  inorder(root);

  cout << endl;

  cout << "Postorder traversal: ";

  postorder(root);

  cout << endl;

  return 0;

}

以上是C++中常见的数据结构类型以及对应的示例代码。希望读者通过学习和实践,能够更好地理解和掌握这些数据结构,从而有效地使用它们来解决实际问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复