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

来源:互联网 发布:手机mac地址会变吗 编辑:程序博客网 时间:2024/06/03 20:21

Copyright (c) 2015,烟台大学计算机学院

All rights reserved,

文件名称:idea.cpp

作者:王阳

完成日期:2015年10月15日

 list.h

01.#ifndef LIST_H_INCLUDED   02.#define LIST_H_INCLUDED   03.  04.#define MaxSize 50   05.typedef int ElemType;  06.typedef struct  07.{  08.    ElemType data[MaxSize];  09.    int length;  10.} SqList;  11.void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表   12.void InitList(SqList *&L);//初始化线性表InitList(L)   13.void DestroyList(SqList *&L);//销毁线性表DestroyList(L)   14.bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)   15.int ListLength(SqList *L);//求线性表的长度ListLength(L)   16.void DispList(SqList *L);//输出线性表DispList(L)   17.bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)   18.int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)   19.bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)   20.bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED   21.#endif  


list.cpp

[cpp] view plaincopyprint?01.#include <stdio.h>   02.#include <malloc.h>   03.#include "list.h"   04.  05.//用数组创建线性表   06.void CreateList(SqList *&L, ElemType a[], int n)  07.{  08.    int i;  09.    L=(SqList *)malloc(sizeof(SqList));  10.    for (i=0; i<n; i++)  11.        L->data[i]=a[i];  12.    L->length=n;  13.}  14.  15.//初始化线性表InitList(L)   16.void InitList(SqList *&L)   //引用型指针   17.{  18.    L=(SqList *)malloc(sizeof(SqList));  19.    //分配存放线性表的空间   20.    L->length=0;  21.}  22.  23.//销毁线性表DestroyList(L)   24.void DestroyList(SqList *&L)  25.{  26.    free(L);  27.}  28.  29.//判定是否为空表ListEmpty(L)   30.bool ListEmpty(SqList *L)  31.{  32.    return(L->length==0);  33.}  34.  35.//求线性表的长度ListLength(L)   36.int ListLength(SqList *L)  37.{  38.    return(L->length);  39.}  40.  41.//输出线性表DispList(L)   42.void DispList(SqList *L)  43.{  44.    int i;  45.    if (ListEmpty(L)) return;  46.    for (i=0; i<L->length; i++)  47.        printf("%d ",L->data[i]);  48.    printf("\n");  49.}  50.  51.//求某个数据元素值GetElem(L,i,e)   52.bool GetElem(SqList *L,int i,ElemType &e)  53.{  54.    if (i<1 || i>L->length)  return false;  55.    e=L->data[i-1];  56.    return true;  57.}  58.  59.//按元素值查找LocateElem(L,e)   60.int LocateElem(SqList *L, ElemType e)  61.{  62.    int i=0;  63.    while (i<L->length && L->data[i]!=e) i++;  64.    if (i>=L->length)  return 0;  65.    else  return i+1;  66.}  67.  68.//插入数据元素ListInsert(L,i,e)   69.bool ListInsert(SqList *&L,int i,ElemType e)  70.{  71.    int j;  72.    if (i<1 || i>L->length+1)  73.        return false;   //参数错误时返回false   74.    i--;            //将顺序表逻辑序号转化为物理序号   75.    for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置   76.        L->data[j]=L->data[j-1];  77.    L->data[i]=e;           //插入元素e   78.    L->length++;            //顺序表长度增1   79.    return true;            //成功插入返回true   80.}  81.  82.//删除数据元素ListDelete(L,i,e)   83.bool ListDelete(SqList *&L,int i,ElemType &e)  84.{  85.    int j;  86.    if (i<1 || i>L->length)  //参数错误时返回false   87.        return false;  88.    i--;        //将顺序表逻辑序号转化为物理序号   89.    e=L->data[i];  90.    for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移   91.        L->data[j]=L->data[j+1];  92.    L->length--;              //顺序表长度减1   93.    return true;              //成功删除返回true   94.}  


main.cpp

 

01.#include "list.h"   02.int main()  03.{  04.    SqList *sq;  05.    ElemType x[6]= {5,8,7,2,4,9};  06.    CreateList(sq, x, 6);  07.    DispList(sq);  08.    return 0;  09.}  

0 0
原创粉丝点击