第三周项目(3):顺序表的基本算法

问题及代码:

/* 
*烟台大学计算机控制与工程学院   
*文件名称:xianxingbiao.cpp   
*作    者:杨宁   
*完成日期:2015年9月17日   
*问题描述:线性表的基本算法,包括线性表的创建,输出,判断是否为空表; 
           删除及销毁线性表。 
*输入描述:无  
*程序输出:输出插入数据后、删除数据后、销毁数据后的线性表
*/  
//线性表的创建、输出//
#include<stdio.h>   
#include<malloc.h>   
#define Maxsize 50   
typedef int ElemType;  
typedef struct  
{  
    ElemType data[Maxsize];  
    int length;  
}SqList;  
//自定义函数声明部分   
void CreatList(SqList *&L,ElemType a[],int n);//用数组创建线性表   
void DispList(SqList *L);//输出线性表DisList(L)   
bool ListEmpty(SqList *L);//判断是否为空表ListEmpty(L)   
void InitList(SqList *&L);//初始化线性表   
bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素   
void CreatList(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)//输出线性表DisList(L)   
{  
    int i;  
    for(i=0;i<L->length;i++)  
        printf("%d ",L->data[i]);  
    printf("\n");  
}  
bool ListEmpty(SqList *L)//判断是否为空表ListEmpty(L)   
{  
    return(L->length==0);  
}  
  
void InitList(SqList *&L)//初始化线性表   
{  
    L=(SqList *)malloc(sizeof(SqList));  
    L->length=0;  
}  
bool ListInsert(SqList *&L,int i,ElemType 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;  
}  
int main()  
{  
    SqList *sq;  
    InitList(sq);  
    ListInsert(sq, 1, 5);  
    ListInsert(sq, 2, 3);  
    ListInsert(sq, 1, 4);  
    DispList(sq);  
    return 0;  
}  

运算结果:

第三周项目(3):顺序表的基本算法_第1张图片

问题及代码:

//线性表数据的删除和销毁//
#include<stdio.h>
#include<malloc.h>
#define Maxsize 50
typedef int ElemType;
typedef struct
{
	ElemType data[Maxsize];
	int length;
}SqList;
//自定义函数声明部分
void CreatList(SqList *&L,ElemType a[],int n);//用数组创建线性表
void DispList(SqList *L);//输出线性表DisList(L)
bool ListEmpty(SqList *L);//判断是否为空表ListEmpty(L)
void InitList(SqList *&L);//初始化线性表
bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素
bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素
void DestroyList(SqList *&L);//销毁线性表
void CreatList(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)//输出线性表DisList(L)
{
	int i;
	for(i=0;i<L->length;i++)
		printf("%d ",L->data[i]);
	printf("\n");
}
bool ListEmpty(SqList *L)//判断是否为空表ListEmpty(L)
{
	return(L->length==0);
}

void InitList(SqList *&L)//初始化线性表
{
	L=(SqList *)malloc(sizeof(SqList));
	L->length=0;
}
bool ListInsert(SqList *&L,int i,ElemType 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;
	if(i<1||i>L->length-1)
		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);
}
int main()
{
    SqList *sq;
    InitList(sq);
    ListInsert(sq, 1, 5);
    ListInsert(sq, 2, 3);
    ListInsert(sq, 1, 4);
    printf("插入后的:\n");
    DispList(sq);
    ListDelete(sq, 1, 5);
    ListDelete(sq, 2, 3);
    printf("删除后的:\n");
    DispList(sq);
    DestroyList(sq);
    printf("销毁后的:\n");
    DispList(sq);
    return 0;
}


运行结果:

第三周项目(3):顺序表的基本算法_第2张图片

知识点及总结:

线性表的基本算法,包括线性表的创建,输出,判断是否为空表; 删除及销毁线性表。最后销毁后数据为空,可理解为数据已被销毁不显示。

学习心得:

分模块了解线性表的基本内容,将模块整合到一个完整的程序中更还理解。

你可能感兴趣的:(第三周项目(3):顺序表的基本算法)