您的位置:首页 > 其它

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

2017-09-19 17:01 381 查看
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 50
typedef 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调用函数就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: