C和指针第十七章编程练习

本章介绍了C语言中关于指针的编程练习,涵盖17.10系列的多个练习点,包括接口设计、递归遍历二叉树的实现。其中,17.10.6部分利用了第8题的函数,17.10.8部分由于数组形式的二叉树难度,作者参考了外部资源完成接口和实现。最后,通过思维导图展示了整个章节的学习路径,尽管有些混乱,但能帮助理解算法的复杂性。
摘要由CSDN通过智能技术生成

17.10.1

void resize_stack(size_t size)
{
   
    assert(stack != NULL);
    stack_size = size;
    realloc(stack, sizeof(STACK_TYPE) * size);
    assert(stack != NULL);
}

17.10.2
接口

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define QUEUE_TYPE int
typedef struct _queue
{
   
    int front;
    int rear;
    int full;
    int present;
    QUEUE_TYPE * ar;
}Queue;
void create_queue(size_t size);
void destroy_queue(void);
void insert(QUEUE_TYPE value);
void deletes(void);
QUEUE_TYPE first(void);
int is_full(void);
int is_empty(void);
void resize_queue(size_t size);

和静态差不多

#include "queue.h"
static Queue * queue;
void create_queue(size_t size)
{
   
    queue = (Queue *)malloc(sizeof(Queue));
    queue->ar = (QUEUE_TYPE *)malloc(sizeof(QUEUE_TYPE) * size);
    if(!queue || !queue->ar)
        return;
    queue->full = size;
    queue->rear = 0;
    queue->front = 1;
    queue->present = 0;
}
void destroy_queue(void)
{
   
    if(queue->ar)
        free(queue->ar);
    if(queue)
        free(queue);
}
void insert(QUEUE_TYPE value)
{
   
    if(is_full())
        return;
    else
    {
   
        if(queue->rear++ == queue->full)
            queue->rear = 0;
        queue->ar[queue->rear] = value;
        queue->present++;
    }
}
void deletes(void)
{
   
    if(is_empty())
        return;
    else
    {
   
        if(queue->front++ == queue->full)
            queue->front = 0;
        queue->present--;
    }
}
QUEUE_TYPE first(void)
{
   
    if(is_empty())
        return 0;
    else
        return queue->ar[queue->front];
}
int is_full(void)
{
   
    return queue->present == queue->full;
}
int is_empty(void)
{
   
    return queue->present == 0;
}
void resize_queue(size_t size)
{
   
    if(queue->ar)
    {
   
        realloc(queue->ar, size);
        if(queue->ar)
            queue->full = size;
    }
    return;
}

17.10.3
接口

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define QUEUE_TYPE int
typedef struct _queue
{
   
    QUEUE_TYPE ar;
    struct _queue * n;
}Queue;
typedef struct
{
   
    QUEUE_TYPE sum;
    Queue * front;
    Queue 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值