• C语言线性表-顺序表操作【转】


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 #define OK        1
      5 #define ERROR    0
      6 #define TRUE    1
      7 #define FALSE    0
      8 #define MAXLEN    100
      9 
     10 typedef int elemType;
     11 typedef struct {
     12     elemType *data;
     13     int len;
     14 }LIST;
     15 
     16 //初始化线性表
     17 int initList(LIST *L)
     18 {
     19     L->data = (elemType *)malloc(MAXLEN * sizeof(elemType));
     20     if (L->data == NULL) return ERROR;
     21     L->len = 0;
     22     return OK;
     23 }
     24 
     25 //销毁线性表
     26 void destoryList(LIST *L)
     27 {
     28     if (L->data) free(L->data);
     29 }
     30 
     31 //清空线性表
     32 void clearList(LIST *L)
     33 {
     34     L->len = 0;
     35 }
     36 
     37 //返回线性表长度
     38 int lengthList(LIST *L)
     39 {
     40     return L->len;
     41 }
     42 
     43 int isEmptyList(LIST *L)
     44 {
     45     if (L->len == 0) return TRUE;
     46     else return FALSE;
     47 }
     48 
     49 void printList(LIST *L)
     50 {
     51     int i;
     52     for (i = 0; i < L->len; i++)
     53         printf("%d ", L->data[i]);
     54     printf("
    ");
     55 }
     56 
     57 //在表头插入元素
     58 int insertAtHead(LIST *L, elemType x)
     59 {
     60     int i;
     61     if (L->len == MAXLEN) return ERROR;
     62     for (i = L->len; i > 0; i--)
     63         L->data[i] = L->data[i-1];
     64     L->data[0] = x;
     65     L->len++;
     66     return OK;
     67 }
     68 
     69 //在表尾插入元素
     70 int insertAtEnd(LIST *L, elemType x)
     71 {
     72     if (L->len == MAXLEN) return ERROR;
     73     L->data[L->len] = x;
     74     L->len++;
     75     return OK;
     76 }
     77 
     78 //在指定索引后插入元素
     79 int insertAfterIndex(LIST *L, elemType x, int index)
     80 {
     81     int i;
     82     if (L->len == MAXLEN) return ERROR;
     83     for (i = L->len + 1; i > index + 1; i++)
     84         L->data[i] = L->data[i-1];
     85     L->data[index+1] = x;
     86     L->len++;
     87     return OK;
     88 }
     89 
     90 //删除指定索引处的元素
     91 int deleteIndexElem(LIST *L, int index)
     92 {
     93     int i;
     94     if (index < 0 || index >= L->len) return ERROR;
     95     for (i = index; i < L->len - 1; i++)
     96         L->data[i] = L->data[i+1];
     97     L->len--;
     98     return OK;
     99 }
    100 
    101 
    102 //修改指定索引处的元素
    103 int updateIndexElem(LIST *L, int index, elemType x)
    104 {
    105     if (index >= 0 && index < L->len)
    106     {
    107         L->data[index] = x;
    108         return OK;
    109     }
    110     else return ERROR;
    111 }
    112 
    113 //返回指定处的元素
    114 elemType getPosElem(LIST *L, int index)
    115 {
    116     if (index < 0 || index >= L->len) return ERROR;
    117     return L->data[index];
    118 }
    119 
    120 //返回某元素的索引
    121 int indexList(LIST *L, elemType x)
    122 {
    123     int i;
    124     for (i = 0; i < L->len; i++)
    125         if (L->data[i] == x)
    126             return i;
    127     return ERROR;
    128 }
  • 相关阅读:
    mongodb的索引
    mongodb的简单操作
    mongodb的安装
    redis简单消息队列
    支持utf8的str_split函数
    php curl 传递数据
    linux 安装 ftp
    php des 对称加解密类
    13. Roman to Integer
    12. Integer to Roman
  • 原文地址:https://www.cnblogs.com/hanyue-AC/p/3595387.html
Copyright © 2020-2023  润新知