57|4

116

帖子

5

TA的资源

一粒金砂(中级)

楼主
 

20260414每日一思 [复制链接]

根据豆包学习了环形队列,对一些知识点有了大概的认识:

1、结构体指针和结构体变量对于结构体成员的引用方式不同,分别是->和.  ,最好用结构体指针操作结构体成员;

2、dequeue函数可以把参数传出去,而且不单能够接收参数

3、定义指针需要注意:定义后需要初始化,除非是函数形参。

代码如下,不知道总结是否准确,细节扣不明白的时候告诫自己不能一口吃成胖子。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define MAX_SIZE 100

typedef struct
{
    int data[MAX_SIZE];
    int front;
    int rear; 
} CircularQueue;

void initQueue(CircularQueue *Q)
{
    Q->front = 0;
    Q->rear = 0;    
}

bool isEmpty(CircularQueue *Q) 
{
    if(Q->front == Q->rear)
        return true;
    else
        return false;
}

bool isFull(CircularQueue *Q)
{
//    if((Q.rear+1) % MAX_SIZE == Q.front)
//        return true;
    return ((Q->rear+1) % MAX_SIZE == Q->front);
//    return false;
}

bool enqueue(CircularQueue *Q,int x)
{
    if(isFull(Q))
    {
        printf("Queue is full\n");
        return false;
    }
    Q->data[Q->rear] = x;
    Q->rear = (Q->rear + 1) % MAX_SIZE;
    return true;
}

bool dequeue(CircularQueue *Q,int *x)
{
    if(isEmpty(Q))
    {
        printf("Queue is empty\n");
        return false;    
    } 
    *x = Q->data[Q->front];
    Q->front = (Q->front + 1) %MAX_SIZE;
    return true;
}

int main()
{
    CircularQueue Q;
    initQueue(&Q);
    
    enqueue(&Q,2);
    enqueue(&Q,3);
    enqueue(&Q,5);
    
    int x;
    dequeue(&Q,&x);
    printf("Dequeue: %d\n",x);
}

 

 

此帖出自编程基础论坛

最新回复

结构体、指针、循环队列,这几个概念混在一起,容易产生误解,所以我们可以逐个分离去理解   循环队列作为算法,是一种数据组织和使用的方法,算法算法,重在方法,其实就是在传统队列的基础上,将队列首尾相接,这样避免进出队列时的整队操作,能有效提高队列使用效率。   结构体的变量和结构体的指针,确实分别通过.和->引用其内部成员。这一点在C++中也同样沿用。   函数的参数使用指针,就像我之前说的,传递地址,可以通过地址将函数内的数据利用参数传递出来,使得函数看起来不只返回值是“返回值”,在某些场合,我们也将参数区分为输入参数和输出参数,其中输出参数通常就是通过传入内存地址来实现的,目的就是你所说的这种     详情 回复 发表于 5 天前
点赞 关注
 

回复
举报

8561

帖子

13

TA的资源

版主

沙发
 
可以下载《hello 算法》这本电子书,算法讲得非常好。
此帖出自编程基础论坛

点评

感谢分享,我看网页端可以直接打开看  详情 回复 发表于 5 天前
 
 
 

回复

116

帖子

5

TA的资源

一粒金砂(中级)

板凳
 
lugl4313820 发表于 2026-4-15 08:25 可以下载《hello 算法》这本电子书,算法讲得非常好。

感谢分享,我看网页端可以直接打开看

此帖出自编程基础论坛
 
 
 

回复

666

帖子

2

TA的资源

纯净的硅(高级)

4
 

结构体、指针、循环队列,这几个概念混在一起,容易产生误解,所以我们可以逐个分离去理解

 

循环队列作为算法,是一种数据组织和使用的方法,算法算法,重在方法,其实就是在传统队列的基础上,将队列首尾相接,这样避免进出队列时的整队操作,能有效提高队列使用效率。

 

结构体的变量和结构体的指针,确实分别通过.和->引用其内部成员。这一点在C++中也同样沿用。

 

函数的参数使用指针,就像我之前说的,传递地址,可以通过地址将函数内的数据利用参数传递出来,使得函数看起来不只返回值是“返回值”,在某些场合,我们也将参数区分为输入参数和输出参数,其中输出参数通常就是通过传入内存地址来实现的,目的就是你所说的这种

 

此帖出自编程基础论坛

点评

是的,看来还得多去使用才能逐步理解。  详情 回复 发表于 3 天前
 
个人签名

非遗古法手工编程

 
 

回复

116

帖子

5

TA的资源

一粒金砂(中级)

5
 
sjtitr 发表于 2026-4-15 10:46 结构体、指针、循环队列,这几个概念混在一起,容易产生误解,所以我们可以逐个分离去理解   循 ...

是的,看来还得多去使用才能逐步理解。

此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

小广播

更多活动
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 1

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表