1.算法

1.1排序

  • 1.1.1桶排序

  • 1.1.2冒泡排序

  • 1.1.3快速排


1.2匹配

  • KMP算法

2.数据结构

  • 2.1线性表

    顺序表:

    #define MaxSize 100    //最大元素个数
    typedef int ElemType;
    
    typedef struct
    {
      ElemType data[MaxSize];    //存放顺序表中元素
      int length;                //存放顺序表的长度
    }SqList;                       //顺序表的类型定义
    //初始化顺序表
    void InitList(SqList *&L)
    {
      L=(SqList *)malloc(sizeof(SqList));  
      L->length=0; 
    }
    //由a中的n个元素建立顺序表
    void CreateList(SqList *&L, ElemType a[], int n)
    {
      int i;
      L=(SqList *)malloc(sizeof(SqList));
      for (i = 0; i < n; i++)
           L->data[i] = a[i];
      L->length = n;
    }
    
    free(L); //销毁顺序表
    L->length==0;//判断顺序表是否为空
    L->length;//求顺序表的长度
    //输出顺序表
    void DispList(SqList *L)
    {
      int i;
      for(i=0;i<L->length;i++)
          printf("%d ",L->data[i]);
      printf("\n");
    }
    //求顺序表中某个位置的值
    bool GetElem(SqList *L,int i,ElemType &e)
    {
      if(i<1||i>L->length)
          return false;
      e=L->data[i-1];
      return true;
    }
    //查找顺序表中第一个值域与e相等的元素的逻辑符号
    int LocateElem(SqList *L,ElemType e)
    {
      int i=0;
      while(i<L->length&&L->data[i]!=e)
          i++;
      if(i>=L->length)
          return 0;
      else
          return i+1;
    }
    //插入元素
    bool ListInsert(SqList *&L,int i,ElemType e)
    {
      int j;
      if(i<1||i>L->length)
          return false;
      i--;
      for(j=L->length;j>i;j--)
          L->data[j]=L->data[j-1];
      L->data[i]=e;
      L->length++;
      return true;
    }
    //删除数据元素
    bool ListDelete(SqList *&L,int i,ElemType &e)
    {
      int j;
      if(i<1||i>L->length)
          return false;
      i--;
      e=L->data[i];
      for(j=i;j<L->length-1;j++)
          L->data[j]=L->data[j+1];
      L->length--;
      return true;
    }