数据结构演示算法c语言实现
时间: 2023-07-25 19:24:31 浏览: 54
这里提供一个使用C语言实现二叉搜索树的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int data; // 节点的值
struct TreeNode *left; // 左子节点指针
struct TreeNode *right; // 右子节点指针
} TreeNode;
// 定义二叉搜索树结构体
typedef struct BinarySearchTree {
TreeNode *root; // 根节点指针
} BinarySearchTree;
// 初始化二叉搜索树
void init(BinarySearchTree *tree) {
tree->root = NULL;
}
// 创建新节点
TreeNode *createNode(int data) {
TreeNode *newNode = (TreeNode *) malloc(sizeof(TreeNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
void insert(BinarySearchTree *tree, int data) {
TreeNode *newNode = createNode(data);
if (tree->root == NULL) {
tree->root = newNode;
return;
}
TreeNode *currNode = tree->root;
TreeNode *parentNode;
while (currNode != NULL) {
parentNode = currNode;
if (data < currNode->data) {
currNode = currNode->left;
} else {
currNode = currNode->right;
}
}
if (data < parentNode->data) {
parentNode->left = newNode;
} else {
parentNode->right = newNode;
}
}
// 中序遍历
void inorderTraversal(TreeNode *node) {
if (node != NULL) {
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
}
// 遍历二叉搜索树
void traverse(BinarySearchTree *tree) {
inorderTraversal(tree->root);
}
int main() {
BinarySearchTree tree;
init(&tree);
insert(&tree, 5);
insert(&tree, 3);
insert(&tree, 7);
insert(&tree, 1);
insert(&tree, 9);
traverse(&tree);
return 0;
}
```
这个代码中,首先定义了一个二叉树节点结构体和一个二叉搜索树结构体。然后定义了初始化函数init、创建新节点函数createNode、插入节点函数insert、中序遍历函数inorderTraversal和遍历二叉搜索树函数traverse。最后在main函数中创建二叉搜索树,插入节点,遍历二叉搜索树并输出结果。
如果想实现其他数据结构和算法,只需要按照相应的逻辑进行编写即可。