• 欢迎光临~

kx-000009-顺序表-头插,尾插

开发技术 开发技术 2022-11-30 次浏览
  1. 顺序表结构体定义。具体的结构体定义请查看头文件:https://www.cnblogs.com/kxwslmsps/p/16937235.html
    typedef status int;     // 定义函数结果状态 
    typedef int etype;      // 元素数据类型
    #define CAPACITY 10     // 定义初始容量 
    
    typedef struct tag_seqList
    {
        etype* pbase;    //< 表基址 
        int capacity;    //< 表容量 
        int size;        //< 表长度 
    }mySList;

     

  2. 头插法
    /**
    * @brief 功能: 头插n
    * @param[in] plist:表结构指针
    * @param[in] x:待插元素
    * @return 返回是否成功插入的结果状态标志
    * @retval - OK(1):插入成功
    * @retval - ERROR(-1):表结构不存在,插入失败
    * @retval - OVERFLOW(-2):表满且扩容失败,插入失败
    */
    status sList_push_front(mySList* plist, etype x)
    {
        if (plist == NULL || plist->pbase == NULL)
        {
            return ERROR;
        }
        int ret = plist->capacity == plist->size;
        if (ret && OK != sList_expand(plist, 3))
        {
            return OVERFLOW;
        }
    
        for (int i = plist->size; i > 0; --i)
        {
            plist->pbase[i] = plist->pbase[i - 1];
        }
        plist->pbase[0] = x;
        plist->size++;
        return OK;
    }

     

  3. 尾插法
    /**
    * @brief 功能: 尾插n
    * @param[in] plist:表结构指针
    * @param[in] x:待插元素
    * @return 返回是否成功插入的结果状态标志
    * @retval - OK(1):插入成功
    * @retval - ERROR(-1):表结构不存在,插入失败
    * @retval - OVERFLOW(-2):表满且扩容失败,插入失败
    */
    status sList_push_back(mySList* plist, etype x)
    {
        if (plist == NULL || plist->pbase == NULL)
        {
            return ERROR;
        }
        int ret = plist->capacity == plist->size;
        if (ret && OK != sList_expand(plist, 3))
        {
            return OVERFLOW;
        }
        plist->pbase[plist->size++] = x;
        return OK;
    }

     

程序员灯塔
转载请注明原文链接:kx-000009-顺序表-头插,尾插
喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com