您的位置:首页 > 其它

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

2016-09-17 20:12 417 查看
问题及描述:
/*
* Copyright (c) 2016, 烟台大学计算机学院
* All rights reserved .
* 文件名称:123.cpp
* 作    者:谷建龙
* 完成时间:2016年9月13日
* 版本号:v1.0
*问题描述:目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList,
以及判断线性表是否为空的算法ListEmpty,以及main函数的算法。
在已经创建线性表的基础上,求线性表的长度ListLength、求线性表L中指定位置的某个数据元素GetElem、查找元素LocateElem的算法都可以实现了。
就在原程序的基础上增加:
增加求线性表的长度ListLength的函数并测试;
增加求线性表L中指定位置的某个数据元素GetElem的函数并测试;
增加查找元素LocateElem的函数并测试;
插入数据元素ListInsert、删除数据元素ListDelete、初始化线性表InitList、销毁线性表DestoryList;
*输入描述:无输入
*程序输出:输出线性表并判断表是否为空,求线性表的长度、求线性表L中指定位置的某个数据元素、查找元素。
*/

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
//必要的库文件包括
#define Maxsize 50     //必要的宏定义

typedef int ElemType;

typedef struct
{
ElemType  data[Maxsize];
int length;
}Sqlist;

void CreateList(Sqlist *&L,ElemType a[],int n);
void DispList(Sqlist *&L);
bool ListEmpty(Sqlist *&L);
int ListLength(Sqlist *&L);
bool GetElem(Sqlist *&L,int n,ElemType &e);
int LocateElem(Sqlist *&L,ElemType &e);
bool ListInsert(Sqlist *&L,ElemType &e,int n);
bool ListDelete(Sqlist *&L,ElemType &e,int n);
void InitList(Sqlist *&L);
void DestoryList(Sqlist *&L);
int main()
{
ElemType a[5]={2,3,1,4,5};
ElemType e;
Sqlist *L;
int b;
CreateList(L,a,5);
printf("顺序表的内容为:\n");
DispList(L);

if(ListEmpty(L))
printf("顺序表为空表。\n");
else
printf("顺序表不为空表。\n");

b=ListLength(L);
printf("顺序表长度为:%d\n", b);

GetElem(L,3,e);
printf("顺序表第三个元素为:%d\n", e);

e=6;
printf("在顺序表第二个元素插入6的结果为:\n");
ListInsert(L,e,2);
DispList(L);

printf("顺序表删除第四个元素的结果为:\n");
ListDelete(L,e,4);
DispList(L);

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;

}
void DispList(Sqlist *&L)
{
int i;
for(i=0;i<L->length;i++)

printf("%d ",L->data[i]);
printf("\n");

}
bool List
4000
Empty(Sqlist *&L)
{
return (L->length ==0);

}
int ListLength(Sqlist *&L)
{
return L->length;

}
bool GetElem(Sqlist *&L,int n,ElemType &e)
{

if(n<1 || n>L->length )
return false;
e=L->data
;
return true;

}
int LocateElem(Sqlist *&L,ElemType &e)
{
int i=0;
while(i<L->length && e!=L->data[i])
i++;

if(i>=L->length)
return 0;
else
return i+1;
}
bool ListInsert(Sqlist *&L,ElemType &e,int n)
{
int i;
if(n<1 || n>L->length)
return false;
n--;
for(i=L->length;i>n;i--)
L->data[i]=L->data[i-1];
L->data
=e;
L->length++;
return true;
}
bool ListDelete(Sqlist *&L,ElemType &e,int n)
{
int i;
if(n<1 || n>L->length)
return false;
n--;
e=L->data
;
for(i=n;i<L->length-1;i++)
L->data[i]=L->data[i+1];

L->length--;
return true;

}
void InitList(Sqlist *&L)
{

L=(Sqlist *)malloc(sizeof(Sqlist));

L->length=0;

}
void DestoryList(Sqlist *&L)
{
free(L);
}
运行结果:
<img src="https://img-blog.csdn.net/20160917201309241?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: