第三周 项目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
原创粉丝点击