第三周 项目1-顺序表的基本运算
来源:互联网 发布:万游网络武汉 编辑:程序博客网 时间:2024/06/11 07:26
问题及代码:
/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:项目1 - 顺序表的基本运算.cpp
作 者:李欣
完成日期:2016年9月16日
版 本 号:v1.0
问题描述: 测试“建立线性表”的算法CreateList,并实现“输出线性表”的算法DispList并判断表是否为空。在已经创建线性表的基础上,求线性表的长度ListLength、求线性表L
中指定位置的某个数据元素GetElem、查找元素LocateElem的算法都可以实现了。 就在原程序的基础上增加:
增加求线性表的长度ListLength的函数并测试;
增加求线性表L中指定位置的某个数据元素GetElem的函数并测试;
增加查找元素LocateElem的函数并测试;
输入描述:若干数据 。
程序输出:1.顺序表的长度
2.第4,、13个元素及其值的大小。
3.值为5、19的在表中的第几位。
*/
#include<stdio.h>
#include<malloc.h>#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];//存放顺序表中元素
int length;//存放顺序表的长度
} SqList;//顺序表的类型定义
//声明实现算法的自定义函数,以及其他必要的自定义函数
void CreateList(SqList *&l, int a[], int n);//构建函数
void DispList(SqList *l);//输出函数
bool ListEmpty(SqList *l);//判断函数
int ListLength(SqList *L); //求线性表的长度ListLength(L)
bool GetElem(SqList *L,int i,ElemType &e); //求某个数据元素值GetElem(L,i,e)
int LocateElem(SqList *L, ElemType e); //按元素值查找LocateElem(L,e)
int main()
{
SqList *sq;
ElemType x[6]= {6,8,3,2,5,1};
ElemType a;
int loc;
CreateList(sq, x, 6);
DispList(sq);
printf("表长度:%d\n", ListLength(sq)); //测试求长度
if(GetElem(sq, 4, a)) //测试在范围内的情形
printf("找到了第4个元素值为:%d\n", a);
else
printf("第4个元素超出范围!\n");
if(GetElem(sq, 13, a)) //测试不在范围内的情形
printf("找到了第13个元素值为:%d\n", a);
else
printf("第13个元素超出范围!\n");
if((loc=LocateElem(sq, 5))>0) //测试能找到的情形
printf("找到了,值为5的元素是第 %d 个\n", loc);
else
printf("值为5的元素木有找到!\n");
if((loc=LocateElem(sq, 19))>0) //测试不能找到的情形
printf("找到了,值为19的元素是第 %d 个\n", loc);
else
printf("值为19的元素木有找到!\n");
return 0;
}
//定义各个自定义函数
void CreateList(SqList *&l, int a[],int n)
{
int i=0;
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=0;
if(ListEmpty(l))
return;
while(i<l->length)
{
printf("%d ",l->data[i]);
i++;
}
printf("\n");
}
bool ListEmpty(SqList *l)
{
if(l->length==0)
{
return 1;
}
else return 0;
}
int ListLength(SqList *l)
{
return (l->length);
}
bool GetElem(SqList *l,int i,ElemType &e)
{
if(i<1||i>l->length)
return false;
e=l->data[i-1];
return true;
}
int LocateElem(SqList *l, ElemType e)
{
int i=0;
while(l->length>i&&l->data[i]!=e)
{
i++;
}
if(i>=l->length)
{
return 0;
}
return i+1;
}
运行结果:
知识点总结:主要是顺序表的基本运算,包括顺序表的建立与输出(判断是否为空),查找元素,判断长度等。
学习心得:虽然还是需要借助外力和“”“兄弟”的帮忙,但是自己还是学会了许多知识。
0 0
- 第三周项目1-顺序表的基本运算
- 第三周项目(1):顺序表的基本运算
- 第三周实践项目1-顺序表的基本运算
- 第三周—项目1 顺序表的基本运算
- 第三周 项目1 - 顺序表的基本运算
- 第三周项目1顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- (第三周项目1)顺序表的基本运算
- 第三周项目1 顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1 顺序表的基本运算(2)
- 第三周【项目1 - 顺序表的基本运算】
- 第三周 项目1-顺序表的基本运算
- 第三周项目1顺序表的基本运算2
- 第三周项目1-顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- acm 最长上升子序列
- String nm = "sun.awt.X11GraphicsEnvironment";
- Unity项目架构设计与开发管理
- uvalive11462
- Android进程保活方法
- 第三周 项目1-顺序表的基本运算
- js获取当前三个月的日期输入方法
- php 之 (一)入门
- 十大经典算法总结(Javascript描述)
- (Java)LeetCode-41. First Missing Positive
- zabbix服务端远程执行命令
- 程序员爱写脚本是种病
- 聚类
- Linux的哲学思想