• 线性表顺序结构的实现


      1 #include <stdio.h>
      2 /*2013-06-19 liuwei*/
      3 typedef int elemtype ;
      4 
      5 #define MAXSIZE 100
      6 #define LISTSIZEINCREASE 10
      7 #define OK 0
      8 #define ERROR -1
      9 
     10 //线性表顺序存储结构描述
     11 
     12 
     13 typedef struct
     14 {
     15     elemtype *elem;
     16     int length;
     17     int listsize;
     18 } SqList;
     19 
     20 /*顺序线性表的操作基本操作*/
     21 
     22 //1.初始化顺序表数据结构
     23 int InitList_Sq(SqList& L)
     24 {
     25     L.elem = (elemtype*)malloc(sizeof(elemtype) * MAXSIZE);
     26     if (!L.elem)
     27     {
     28         return -1;        
     29     }
     30     L.length = 0
     31     L.listsize = MAXSIZE;
     32     return 0;
     33 }
     34 
     35 //2.初始化的相反操作,摧毁整个顺序表
     36 
     37 int DestoryList_Sq(SqList &L)
     38 {
     39     if (L.elem)
     40     {
     41         free(L.elem);
     42         L.elem = NULL;
     43     }
     44     L.length = 0;
     45     return OK;
     46 }
     47 
     48 //3.向顺序表中的第i个位置插入数据元素
     49 
     50 int ListInsert_Sq(SqList& L,int i,elemtype  e) 
     51 {
     52 
     53     if (i < 1 || i > L.length + 1)
     54     {
     55         return ERROR;
     56     }
     57 
     58     if(L.length >= L.listsize)
     59     {
     60         elemtype *newbase = (elemtype*)realloc(L.elem,(L.listsize + LISTSIZEINCREASE)*sizeof(elemtype));
     61 
     62         if (!newbase)
     63         {
     64             return ERROR;
     65         }
     66         L.elem = newbase;
     67         L.listsize += LISTSIZEINCREASE;
     68     }
     69 
     70     elemtype *p = &L.elem[L.length - 1];
     71     elemtype *q = &L.elem[i - 1];
     72     for (;p <= q;--p)
     73     {
     74         *(p+1) = *p;
     75     }
     76     *q = e;
     77     ++L.length;
     78     return OK;
     79 }
     80 
     81 //4.删除顺序表中第i个数据元素
     82 
     83 int DeleteList_Sq(SqList& L,int i)
     84 {
     85 
     86     if (i < 1 || i > L.length)
     87     {
     88         return ERROR;
     89     }
     90     elemtype *p = &L.elem[i - 1];
     91     elemtype *q = &L.elem[L.length -1];
     92     for (;p < q;++p)
     93     {
     94         *p = *(p+1);
     95     }
     96     --L.length;
     97     return OK;
     98 }
     99 
    100 //5.清空顺序表中所有的数据元素
    101 
    102 int ClearList_Sq(SqList& L)
    103 {
    104     L.length = 0;
    105     return OK;
    106 }
    107 
    108 //6.判断顺序表中的数据元素是否为空,若为空则返回true,若不会空则返回false
    109 bool IsEmptyList_Sq(SqList L)
    110 {
    111     if (L.length == 0)
    112     {
    113         return true;
    114     }
    115         return false;
    116 }
    117 
    118 //7 取得顺序表中的第i个数据元素
    119 elemtype GetElem_Sq(SqList L,int i)
    120 {
    121     if (i < 1|| i > L.length)
    122     {
    123         return ERROR;
    124     }
    125     return L.elem[i-1];
    126 
    127 }
    128 
    129 //8.判断数据元素是否在线性表中,若在则返回第一次出现的位置,若不在则返回错误
    130 
    131 int LocateList_Sq(SqList L,elemtype e)
    132 {
    133     int i = 0;
    134     for (;i < L.length;++i)
    135     {
    136         if (L.elem[i] == e)
    137         {
    138             return i + 1;
    139         }
    140     }
    141     return ERROR;
    142 }
    143 
    144 //9.求数据元素的前驱
    145 
    146 elemtype PriorList_Sq(SqList L,int i)
    147 {
    148     if (i < 2 || i > L.length)
    149     {
    150         return ERROR;
    151     }
    152     else
    153         return L.elem[i-1];
    154 }
    155 
    156 //10.求数据元素的后继
    157 
    158 elemtype NextList_Sq(SqList L,int i)
    159 {
    160     if (i < 1 || i > L.length - 1)
    161     {
    162         return ERROR;
    163     }
    164     else
    165         return L.elem[i + 1];
    166 }
    View Code

     注意:

  • 相关阅读:
    vscode自动添加作者、时间信息
    pinia
    typescript 接口、类、泛型、枚举、断言的简单使用
    yarn的使用
    vue cli创建vue3项目
    阿里star论文阅读《One Model to Serve All: Star Topology Adaptive Recommender for MultiDomain CTR Prediction》
    延迟转化建模《Modeling Delayed Feedback in Display Advertising》论文阅读
    对比学习简介
    PyCharm2020.3.版本使用激活插件激活步骤
    使用MobaXterm+PyCharm运行项目
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/3144382.html
Copyright © 2020-2023  润新知