C语言泛型数据结构模板(C语言泛型链表(list)、泛型队列(queue)、泛型栈(stack)、泛型数组(array))

前面时间我讲了c语言的泛型结构和this指针实现,这次我写了几个常用的数据结构通用模板。

文件层次

注意: 此源码只适用于gcc编译器!!!
注意: 此源码只适用于gcc编译器!!!
注意: 此源码只适用于gcc编译器!!!

-----templata.h
┆
-----array.h
┆
-----stack.h
┆
-----queue.h
┆
-----lsit.h

所有模板都是用宏实现的
下面是头文件是使用函数介绍文档,和实现思路介绍
C语言泛型模板
C语言模板与this指针
array.h
stack.h
queue.h
list.h

array泛型模板示例

#include <stdio.h>
#include "array.h"
ARRAY_TYPE_SET(char);

typedef struct person Person;
ARRAY_TYPE_SET(Person);
struct person{
    char name[8];
    char sex[4];
    int  age;
}person_3[]={
        {"南木","男",20},
        {"橙子","男",35},
        {"时光","男",16},
        {"岑子","男",22},
        {"附离","男",18},
};


int main() {

    /********array动态用法******************/
    array(char) test=new(array(char));
    for (char i = 'A'; i < 'H'; ++i) {
        test.push_back(i);
    }
    for (char i = 'A'; i < 'H'; ++i) {
        test.push_back(i);
    }
    void print_char(char c);
    test.traversal(print_char);
    test.sort().traversal(print_char).reverse().traversal(print_char);

    /*********array静态用法***************/
    array(Person) _static=new(array(Person));
    _static.setArray(person_3, 5, 5,false);
    void print_person(Person one);
    _static.sort().traversal(print_person).reverse().traversal(print_person);

    /***修改默认比较函数,按年龄比较***/
    int agecmp(const void* one,const void* two);
    _static.setcmp(agecmp);
    _static.sort().traversal(print_person).reverse().traversal(print_person);

    test.delete();

    return 0;
}

void print_char(char c) {
    printf("%c ", c);
}

void print_person(Person one) {
    printf("<%s,%s,%d>\n", one.name, one.sex, one.age);
}

int agecmp(const void *one, const void *two) {
    return ((Person *) one)->age > ((Person *) two)->age;
}

运行结果

A B C D E F G A B C D E F G
A A B B C C D D E E F F G G
G G F F E E D D C C B B A A
<南木,,20>
<岑子,,22>
<时光,,16>
<橙子,,35>
<附离,,18>

<附离,,18>
<橙子,,35>
<时光,,16>
<岑子,,22>
<南木,,20>

<时光,,16>
<附离,,18>
<南木,,20>
<岑子,,22>
<橙子,,35>

<橙子,,35>
<岑子,,22>
<南木,,20>
<附离,,18>
<时光,,16>

欢迎小伙伴一起学编程 这里有大量编程书籍
编程交流群:982865797

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值