📜  数据结构指针(1)

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

数据结构之指针

简介

指针是C语言中最为基础、最为重要的概念,它也是许多高级编程语言中必须掌握的知识点。指针在程序中充当着非常关键的角色,它可以帮助我们进行内存操作,充分发挥程序效率。在数据结构中,指针也扮演着重要的角色。理解指针,不仅可以提高我们的代码质量,更能让我们在阅读大量的资料和源代码的时候,能够更加容易地理解和应用。

指针的概念

指针的本质是一个地址,存储着某个数据的内存地址。在C语言中,我们可以通过&符号获取变量的地址,而通过在指针类型前添加*符号,可以声明一个指针类型的变量。

int a = 1; // 定义一个整型变量a,值为1
int* p;   // 定义一个整型指针变量p

p = &a;   // 把a的地址赋给指针变量p
指针的使用

通过指针,我们可以实现数据结构中非常重要的链表,树等数据结构,其使用也能够极大提高内存的利用效率。下面简要介绍指针在数据结构中的应用。

链表

链表是数据结构中一种基本的数据结构,其节点通过指针连接起来,实现了数据的快速插入、删除、移动等操作。链表的链式结构也为树、图等复杂数据结构的实现提供了基础。

struct ListNode {
    int val;
    struct ListNode *next;
};

struct ListNode* createList() {
    struct ListNode* head = malloc(sizeof(struct ListNode)); // 创建链表头结点
    struct ListNode* p = head;
    for (int i = 0; i < 10; i++) {
        struct ListNode* tmp = malloc(sizeof(struct ListNode));
        tmp->val = i;
        tmp->next = NULL;
        p->next = tmp;
        p = p->next;
    }
    return head;
}

树是一种自然的数据结构,可以管理组成家谱、公司组织等等。通过指针的连接可以快速实现树的遍历、查找、删除、修改等操作。

struct TreeNode {
    int val;
    struct TreeNode* left;
    struct TreeNode* right;
};

struct TreeNode* createTree(int* nums, int n) {
    if (n == 0) return NULL;
    struct TreeNode* root = malloc(sizeof(struct TreeNode));
    int mid = n / 2;
    root->val = nums[mid];
    root->left = createTree(nums, mid);
    root->right = createTree(nums + mid + 1, n - mid - 1);
    return root;
}
总结

指针是C语言中最为基础、最为重要的概念,对于编程人员来说了解指针不仅是一种学习,更是一种必须的技能。在数据结构中,指针也扮演着重要的角色。通过指针,我们可以实现链表、树等复杂数据结构,也能够极大提高内存的利用效率。