第三周项目2 建设 顺序表 算法库

来源:互联网 发布:设计模式 php 编辑:程序博客网 时间:2024/06/11 13:17

问题及描述:

    

/*  *Copyright (c) 2017, 烟台大学计算机学院  *All rights reserved.  *文件名称:xm2.cpp  *作    者:范宝磊  *完成日期:2017年9月18日  *版 本 号:v1.0  *  *问题描述:建设顺“序表算”法库  *输入描述:一组数  *程序输出:见程序运行截屏  */  
 list.h

#ifndef LIST_H_INCLUDED  #define LIST_H_INCLUDED    #define MaxSize 50  typedef int ElemType;  typedef struct  {      ElemType data[MaxSize];      int length;  } SqList;  void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表  void InitList(SqList *&L);//初始化线性表InitList(L)  void DestroyList(SqList *&L);//销毁线性表DestroyList(L)  bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)  int ListLength(SqList *L);//求线性表的长度ListLength(L)  void DispList(SqList *L);//输出线性表DispList(L)  bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)  int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)  bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)  bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)  #endif  


list.cpp

#include <stdio.h>  #include <malloc.h>  #include "list.h"    //用数组创建线性表  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;  }    //初始化线性表InitList(L)  void InitList(SqList *&L)   //引用型指针  {      L=(SqList *)malloc(sizeof(SqList));      //分配存放线性表的空间      L->length=0;  }    //销毁线性表DestroyList(L)  void DestroyList(SqList *&L)  {      free(L);  }    //判定是否为空表ListEmpty(L)  bool ListEmpty(SqList *L)  {      return(L->length==0);  }    //求线性表的长度ListLength(L)  int ListLength(SqList *L)  {      return(L->length);  }    //输出线性表DispList(L)  void DispList(SqList *L)  {      int i;      if (ListEmpty(L)) return;      for (i=0; i<L->length; i++)          printf("%d ",L->data[i]);      printf("\n");  }    //求某个数据元素值GetElem(L,i,e)  bool GetElem(SqList *L,int i,ElemType &e)  {      if (i<1 || i>L->length)  return false;      e=L->data[i-1];      return true;  }    //按元素值查找LocateElem(L,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;  }    //插入数据元素ListInsert(L,i,e)  bool ListInsert(SqList *&L,int i,ElemType e)  {      int j;      if (i<1 || i>L->length+1)          return false;   //参数错误时返回false      i--;            //将顺序表逻辑序号转化为物理序号      for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置          L->data[j]=L->data[j-1];      L->data[i]=e;           //插入元素e      L->length++;            //顺序表长度增1      return true;            //成功插入返回true  }    //删除数据元素ListDelete(L,i,e)  bool ListDelete(SqList *&L,int i,ElemType &e)  {      int j;      if (i<1 || i>L->length)  //参数错误时返回false          return false;      i--;        //将顺序表逻辑序号转化为物理序号      e=L->data[i];      for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移          L->data[j]=L->data[j+1];      L->length--;              //顺序表长度减1      return true;              //成功删除返回true  }  main函数:
       
#include <stdio.h>  #include <malloc.h>  #include "list.h"  int main()  {      SqList *sq;      ElemType a;      ElemType b;      ElemType x[6]= {1,2,3,4,5,6};      CreateList(sq, x, 6);      DispList(sq);       printf("表长度:%d\n", ListLength(sq));      if(GetElem(sq,4,a))//测试在范围内      {          printf("顺序表第4个元素:%d \n",a);      }        else      {            printf("第4个元素超出范围\n");      }        if(GetElem(sq, 3, a))  //测试不在范围内的情形          printf("找到了第3个元素值为:%d\n", a);      else          printf("第3个元素超出范围!\n");            if(b=LocateElem(sq,3)>0)//测试找到          {                 printf("值为3的元素是第 %d 个\n",b);              }          else          {               printf("值为8的元素木有找到!\n");          }         if((b=LocateElem(sq, 17))>0)  //测试不能找到的          printf("找到了,值为17的元素是第 %d 个\n", b);      else          printf("值为17的元素没有找到!\n");          printf("初始化插入之后\n");          InitList(sq);      ListInsert(sq, 1, 5);      ListInsert(sq, 2, 3);      ListInsert(sq, 1, 4);      DispList(sq);      return 0;  }  
      运行结果:

      

    

   学习 心得:

 写博客和做算法库都是很有意义的事情!



 

原创粉丝点击