C 语言结构体指针实现数据的增删改查

本文探讨了在C语言中使用结构体指针进行数据的增删改查,强调了学习C语言对理解编程的重要性。通过VS2019社区版作为调试环境,文章介绍了操作数组时需要的三个参数:首元素地址、总数组长度和有效数据长度。并以`scanf`函数为例,解释了读写操作中地址和值的区别,以及何时需要使用取地址符`&`。
摘要由CSDN通过智能技术生成

学习数据结构的过程,有助于你对编程的整体有一个理解
另外,推荐无论如何都要学习C语言,很有启发
调试环境:VS2019 社区版
确定一个数组,需要三个有效参数
1.* pBase 首元素地址
2.len 总数组长度
3.cnt 有效数据长度
如何读懂代码:
1.熟悉执行流程
2.熟悉实现过程
3.试数

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct Arr
{
   
	int* pBase;//数组的首地址
	int len;//数组的长度
	int cnt;//有效数据长度,一般面向对象的语言都是可以直接调用的:arr.length 类似这种
}ARR, *pARR ;// struct Arr ARR     struct ARR * pARR


bool isEmpty(pARR pArray)
{
   
    //有效数据是0
    if (0 == pArray->cnt)
    {
   
        return true;
    }
    else
    {
   
        return false;
    }
}
bool isFull(struct Arr* pArray)
{
   
    //有效数据等于长度
    if (pArray->cnt == pArray->len)
    {
   
        return true;
    }
    else
    {
   
        return false;
    }

};
void initArr(struct Arr* pArray, int length)//初始化结构体,两个形参,一个是地址,一个是长度
{
   
    pArray->pBase = (int*)malloc(sizeof(int) * length);//给数组的第一个元素分配内存
    if (NULL == pArray->pBase)
    {
   
        printf("内存分配失败\n");
        exit
单链表是一种常用的数据结构,它由若干个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在Linux C语言,可以通过结构体实现单链表,结构体包含一个数据成员和一个指向下一个节点的指针成员。 下面是一个简单的单链表结构体定义: ```c typedef struct node { int data; struct node *next; } Node; ``` 其,data表示数据元素,next表示指向下一个节点的指针。 增加节点操作: ```c void add_node(Node **head, int data) { Node *new_node = (Node*)malloc(sizeof(Node)); new_node->data = data; new_node->next = NULL; if (*head == NULL) { *head = new_node; } else { Node *cur = *head; while (cur->next != NULL) { cur = cur->next; } cur->next = new_node; } } ``` 删除节点操作: ```c void delete_node(Node **head, int data) { Node *cur = *head; Node *prev = NULL; while (cur != NULL) { if (cur->data == data) { if (prev == NULL) { *head = cur->next; } else { prev->next = cur->next; } free(cur); return; } prev = cur; cur = cur->next; } } ``` 修改节点操作: ```c void modify_node(Node *head, int old_data, int new_data) { Node *cur = head; while (cur != NULL) { if (cur->data == old_data) { cur->data = new_data; return; } cur = cur->next; } } ``` 查询节点操作: ```c Node* find_node(Node *head, int data) { Node *cur = head; while (cur != NULL) { if (cur->data == data) { return cur; } cur = cur->next; } return NULL; } ``` 以上就是在Linux C语言实现单链表的增删改查操作的示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值