c语言接口与实现--第11章序列理解

本章中强调序列是本书中最有用的ADT(abstact data type)之一,尽管序列的规格相对简单,但可以用作数组、链表、栈、队列和双端队列,实现这些数据结构的ADT所需的设施通常都包含在序列中。前面这些基本是书中的原话,话不多说,上代码。
seq.h

#ifndef SEQ_INCLUDED
#define SEQ_INCLUDED

#define T Seq_T
typedef struct T *T;

extern T Seq_new(int hint);
extern T Seq_seq(void *x, ***);

extern void Seq_free(T *seq);
extern int Seq_length(T seq);

extern void *Seq_get(T seq, int i);
extern void *Seq_put(T seq, int i, void *x);

extern void *Seq_addlo(T seq, void *x);
extern void *Seq_addhi(T seq, void *x);

extern void *Seq_remlo(T seq);
extern void *Seq_remhi(T seq);

#undef T

#endif

seq.c

#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include "assert.h"
#include "seq.h"
#include "array.h"
#include "arrayrep.h"
#include "mem.h"

#define T Seq_T

struct T
{
    struct Array_T array;
    int length;
    int head;
};

T Seq_new(int hint)
{
    T seq;

    assert(hint >= 0);
    NEW0(seq);
    if(hint == 0)
    {
        hint = 16;
    }
    ArrayRep_init(&seq->array, hint, 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值