第三周项目1 顺序表的基本运算

来源:互联网 发布:linux 文件读权限 编辑:程序博客网 时间:2024/05/16 06:33
  1. /*    
  2. *Copyright (c) 2017,烟台大学计算机与控制工程学院    
  3. *All rights reserved.    
  4. *文件名称:项目1 - 顺序表的基本运算    
  5. *作    者:葛惠文    
  6. *完成日期:2017年9月19日    
  7. *版 本 号:v1.0    
  8. *  问题描述:实现顺序表基本运算有算法,依据“最小化”的原则进行测试。  
  9.    所谓最小化原则,指的是利用尽可能少的基本运算,组成一个程序,并设计main函数完成测试。    
  10. */
#include<stdio.h>#include <malloc.h>#define MaxSize 50typedef int ElemType;typedef struct{    ElemType data[MaxSize];    int length;}SqList;void CreateList(SqList *&L,ElemType a[],int n);void InitList(SqList *&L);void DestroyList(SqList *&L);bool ListEmpty(SqList *L);int ListLength(SqList *L);void DispList(SqList *L);bool GetElem(SqList *L,int i,ElemType &e);int LocateElem(SqList *L,ElemType e);bool ListInsert(SqList *&L,int i,ElemType e);bool ListDelete(SqList *&L,int i,ElemType &e);int main(){    SqList *sq;    ElemType x[6]={5,8,7,2,4,9};    CreateList(sq,x,6);    DispList(sq);    return 0;}//建立顺序表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;}//初始化线性表InitListvoid InitList(SqList *&L){    L=(SqList *)malloc(sizeof(SqList));    L->length=0;}//销毁线性表DestroyListvoid DestroyList(SqList *&L){    free(L);}//判定是否为空表ListEmptybool ListEmpty(SqList *L){    return(L->length==0);}//求线性表的长度ListLengthint ListLength(SqList *L){    return(L->length);}//输出线性表DispListvoid DispList(SqList *L){    int i;    if(ListEmpty(L))        return;    for(i=0;i<L->length;i++)        printf("%d",L->data[i]);    printf("\n");}//求某个数据元素值GetElembool GetElem(SqList *L,int i,ElemType &e){    if(i<1 || i>L->length)        return false;    e=L->data[i-1];        return true;}//按元素值查找LocateElemint 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;}//插入数据元素ListInsertbool ListInsert(SqList *&L,int i,ElemType e){    int j;    if(i<1 || i>L->length+1)        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;}//删除数据元素ListDeletebool 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;}

原创粉丝点击