您的位置 首页 编程知识

C语言数据结构:树和图的数据表示与操作

C语言数据结构:树和图的数据表示与操作 树 是一个层次结构的数据结构 由节点组成,每个节点包含一个数据元素和指…

C语言数据结构:树和图的数据表示与操作

C语言数据结构:树和图的数据表示与操作

  • 是一个层次结构的数据结构
  • 由节点组成,每个节点包含一个数据元素和指向其子节点的指针
  • 二叉树是一种特殊类型的树,其中每个节点最多有两个子节点

数据表示

struct TreeNode {     int data;     struct TreeNode *left;     struct TreeNode *right; };
登录后复制

操作

立即学习“”;

  • 创建树
  • 遍历树(先序、中序、后序)
  • 搜索树
  • 插入节点
  • 删除节点

  • 是一个集合的数据结构,其中的元素是顶点,它们通过边连接在一起
  • 边可以是带权或无权的

数据表示

邻接矩阵:

int adjMatrix[V][V];
登录后复制

邻接表:

struct AdjListNode {     int dest;     struct AdjListNode *next; };  struct AdjList {     struct AdjListNode *head; };  struct Graph {     int V;     struct AdjList *array; };
登录后复制

操作

立即学习“”;

  • 创建图
  • 添加边
  • 遍历图
  • 查找最短路径

实战案例:二叉查找树

二叉查找树是一种二叉树,其数据元素在树中按顺序存储。这使得搜索、插入和删除操作非常高效。

// 创建二叉查找树 struct TreeNode *createBST(int data) {     struct TreeNode *root = malloc(sizeof(struct TreeNode));     root->data = data;     root->left = root->right = NULL;     return root; }  // 在二叉查找树中搜索元素 int searchBST(struct TreeNode *root, int data) {     if (!root) {         return 0;     } else if (root->data == data) {         return 1;     } else if (data < root->data) {         return searchBST(root->left, data);     } else {         return searchBST(root->right, data);     } }  // 在二叉查找树中插入元素 struct TreeNode *insertBST(struct TreeNode *root, int data) {     if (!root) {         return createBST(data);     } else if (data < root->data) {         root->left = insertBST(root->left, data);     } else if (data > root->data) {         root->right = insertBST(root->right, data);     }     return root; }  // 在二叉查找树中删除元素 struct TreeNode *deleteBST(struct TreeNode *root, int data) {     if (!root) {         return NULL;     } else if (data < root->data) {         root->left = deleteBST(root->left, data);     } else if (data > root->data) {         root->right = deleteBST(root->right, data);     } else {         // 如果节点有两个子节点,则找到前驱(左子树中最右节点)或后继(右子树中最左节点)         if (root->left && root->right) {             int successor = root->right->data;             root->data = successor;             root->right = deleteBST(root->right, successor);         } else if (root->left) {             struct TreeNode *temp = root->left;             free(root);             return temp;         } else if (root->right) {             struct TreeNode *temp = root->right;             free(root);             return temp;         } else {             free(root);             return NULL;         }     }     return root; }
登录后复制

以上就是C语言数据结构:树和图的数据表示与操作的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/2735.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部