C 语言程序设计实践
综合题目:
顺序表基本算法
班
级:
姓
名:
同组人员:
提交日期:
一、程序功能:
1、建立一个顺序表。2、对建立好的顺序表进行一些基本的操作,如:
a.顺序表的类型定义。
b.求顺序表长操作。
c.取顺序表元素操作。
d.按值查找操作。
e.显示元素操作。
f.插入操作。
g.删除操作。
h.显示元素操作。
二、算法设计思想:
用一组存储单元来存放线性表中的数据元素,把顺序表中的所有元素按照其逻辑结构顺序依次储存到从计算机储存器中指定储存位置开始的一块连续的储存空间。线性表中的第一个位置储存在数组的起始位置(下标为 0)在定义一个顺序表时,除了定义一个数组来储存线性表中的所有元素,还需要定义一个整型变量来储存线性表的实际长度。然后通过对数组元素中的元素进行操作,对顺序表进行基本算法。
三、 算法运行结果
1、显示整个功能
2、设置顺序表的长度:
3、求出并返回顺序表的长度:
4、在顺序表中取出某个位置的元素并返回其值:
5、显示顺序表中的元素:
6、在顺序表的某个位置插入元素:
7、删除顺序表中的某个元素
8、输出顺序表
9、将顺序表逆序输出
10、退出对顺序表的操作:
四、收获及体会 通过对顺序表的几个基本运算的调用,实现顺序表的几个基本算法。同时也懂得如何定义顺序表,还有顺序表的用法。
五、算法源代码 #include<stdio.h> #include<stdlib.h> #define
MaxSize
50
typedef
int
ElemType ; typedef
struct
{
ElemType data[MaxSize];
int length;
}SqList;
//顺序表类型
void InitList(SqList *& L); //初始化顺序表
void CreateList(SqList*& L,ElemType a[],ElemType n); //建立顺序表
bool ListEmpty(SqList *L);
//判断顺序表是否为空表
int ListLength(SqList *L);
//求顺序表长度
void DispList(SqList *L);
//输出顺序表
bool GetElem(SqList *L,ElemType i,ElemType &e);
//求顺序表中某个元素值
int LocateElem(SqList *L,ElemType e);
//按照元素值查找
bool ListInsert(SqList *& L,ElemType i,ElemType e);
//插入元素 e
bool ListDelete(SqList *& L,int i,ElemType &e);
//删除元素
void DestroyList(SqList *&L);
//销毁顺序表
void InitList(SqList *& L)
//初始化顺序表
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0; } void CreateList(SqList*& L,ElemType a[],ElemType n)
//建立顺序表
2 {
int i;
L=(SqList *)malloc(sizeof(SqList));
for(i=0;i<n;i++)
L->data[i]=a[i];
L->length=n; } bool ListEmpty(SqList *L)
//判断顺序表是否为空表
{
return(L->length==0); } int ListLength(SqList *L)
//求顺序表长度
{
return(L->length); } void DispList(SqList *L)
//输出顺序表
{
int i;
for(i=0;i<L->length;i++)
printf("%3d",L->data[i]);
printf("\n"); }
bool GetElem(SqList *L,ElemType 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(i<L->length&&L->data[i]!=e)
i++;
if(i>L->length)
return 0;
else
return i+1; } bool ListInsert(SqList *& L,ElemType i,ElemType e)
//插入元素 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;
} bool ListDelete(SqList *& L,int i,ElemType &e)
//删除元素
{
int j;
L = NULL;
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 DestroyList(SqList *&L)
//销毁顺序表
{
free(L);
L = NULL; }
版权所有:格斯文档网 2010-2024 未经授权禁止复制或建立镜像[格斯文档网]所有资源完全免费共享
Powered by 格斯文档网 © All Rights Reserved.。浙ICP备19042928号