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

来源:互联网 发布:国外的知乎 编辑:程序博客网 时间:2024/06/02 07:12

list.h 代码:

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: *作    者:陈军正 *完成日期:2017年9月19日 *版 本 号:v1.0 * *问题描述:*/  #ifndef LIST_H_INCLUDEDbool ListInsert(SqList *&L,int i,ElemType e)#define LIST_H_INCLUDED#define MaxSize 50typedef struct{    int data [MaxSize];    int length;}Sqlist;void CreateList (Sqlist *&L,int a[],int n);  ///创建线性表void DispList (Sqlist *&L);  ///输出线性表bool EmptyList (Sqlist *&L); ///判断线性表是否为空void ListLength(Sqlist *&L);  ///判断线性表的长度void GetElem(Sqlist *&L,int n);/// 按位置查找元素int LocateElem(Sqlist *&L,int n);///查找元素的位置bool ListInsert(Sqlist *&L,int n,int w);  ///线性表元素插入bool ListDelete(Sqlist *&L,int i,int &e);  ///线性表元素删除void InitList(Sqlist *&L) ;  ///线性表初始化void DestroyList(Sqlist *&L);///摧毁线性表#endif // LIST_H_INCLUDED

main.cpp 代码:

#include <iostream>#include "list.h"using namespace std;int main(){    int i,n,c,w,s,y,z;    int x[6] = {0,1,2,3,4,5};    Sqlist *sq;    CreateList(sq,x,6); ///创建线性表    DispList(sq);  ///输出线性表    ListLength(sq);///线性表的长度    cout<<"请输入您想查询的位置:";    cin>>i;    GetElem(sq,i); ///按位置查找元素    cout<<"请输入您想确定的元素:";    cin>>n;    LocateElem(sq,n);///查找元素的位置    cout<<"请输入想要插入的数据和位置:";    cin>>c>>w;    ListInsert(sq,c,w); ///插入线性表元素    DispList(sq); ///线性表输出    cout<<"请输入您想要删除的位置和元素:";    cin>>y>>z;    ListDelete(sq,y,z);  ///删除线性表    DispList(sq);   ///输出线性表    InitList(sq);   ///初始化线性表    DestroyList(sq);   ///摧毁线性表    return 0;}

list.cpp 代码:

#include "malloc.h"#include "list.h"#include <iostream>using namespace std;void CreateList (Sqlist *&L,int a[],int n) ///创建线性表{    L = (Sqlist *)malloc(sizeof(Sqlist)); ///为线性表开辟动态内存空间    int i;    for(i=0; i<n; i++)    {        L->data[i] = a[i];    }    cout<<endl;    L->length = n;}void DispList (Sqlist *&L)   ///输出线性表{    if (EmptyList(L))        for (int i=0; i<L->length; i++)            cout<<L->data[i]<<" ";            cout<<endl;}bool EmptyList (Sqlist *&L)  ///判断线性表是否为空{    return  L->length;}void ListLength(Sqlist *&L)   ///线性表的长度{    cout<<"线性表的长度为:";    cout<<L->length<<endl;}void GetElem(Sqlist *&L,int n) ///查找线性表的某元素{    cout<<L->data[n-1]<<endl;}int LocateElem(Sqlist *&L,int n)  ///元素的位置{    int i =0;    while (L->data[i] !=n && i<L->length)        i++;    if (i > L->length)    return 0;    else        cout<<i+1<<endl;}bool ListInsert(Sqlist *&L,int n,int w)  ///插入元素{    int i,q;    q = L->length;    if ( w>0 && w<L->length+2)  ///判断删除位置是否正确       while (q != w-1)       {           L->data[q] = L->data[q-1];           q--;       }    else     {         cout<<"您输入的范围不对。"<<endl;         return false;     }       L->data[w-1] = n;    L->length++;}bool ListDelete(Sqlist *&L,int i,int &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;}void InitList(Sqlist *&L)  /// 初始化线性表{    L=(Sqlist *)malloc(sizeof(Sqlist));///为线性表开辟动态内存空间    L->length=0;}void DestroyList(Sqlist *&L)  ///摧毁线性表{    free(L);}

运行结果:


知识点总结:第一次数据结构程序的实现,体验到程序中的代码有些相似性,有些代码可以重复使用,所以为了方便可以单独写再一个函数当中,之后只要i调用函数就可以了


阅读全文
0 0