c语言实现vector实例

    xiaoxiao2021-12-14  19

    #include<stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #define INITIAL_CAP 50

    #define INCREMENT_SIZE 10

     

    typedef double elem;

     

    typedef struct

    {

            elem* s;

            int cap;                       //容器容量

            int len;                       //容器里长度

    }vec; 

    //初始化

    void init(vec* p)

    {

           p->s=malloc(INITIAL_CAP*sizeof(elem));

           p->cap=INITIAL_CAP;

           p->len=0;

    }

    //销毁

    void destroy(vec* p)

    {

            free(p->s);

            p->cap=0;

            p->len=0;

            free(p);

    }

    //尾插

    void push_back(vec* p,elem data)

    {

         if(p->len==p->cap)

         {

                  p->s=realloc(p->s,INCREMENT_SIZE*sizeof(elem));      

                  p->cap=p->cap+INCREMENT_SIZE;

         }

        p->s[len]=data;

        p->len++;

    }

    //任意位置插入

    void insert(vec* p,int pop,elem data)

    {

            if(p->cap==p->len)

            {

                     p->s=realloc(p->s,INCREMENT_SIZE*sizeof(elem));

                     p->cap=p->cap+INCREMENT_SIZE;

            }

            int i;

           for(i=len-1;i>=pop;--i)

          {

                         p->s[i+1]=p->s[i];

          }

         p->s[i+1]=data;

          p->len++;

    }

    //删除

    void rease(vec* p,int pop,elem data)

    {

         int i=pop;

        for(i;i<p->len-1;++i)

        {

               p->s[i]=p->s[i+1];

        }

        p->len--;

    }

    //判空

    int empty(vec* p)

    {

       return  !(p->len);

    }

    我只写了部分,大致就这么回事
    转载请注明原文地址: https://ju.6miu.com/read-969316.html

    最新回复(0)