第三周,顺序表的基本运算(3)

问题及描述:

/*
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:3.3.cpp
* 作    者:于东林
* 完成日期:2015年9月18日
* 版本号:v3.3.0 
* 问题描述:增加插入数据元素ListInsert以及初始化线性表InitList的运算,
* 输入描述:无
* 程序输出:线性表的结果
*/

程序及代码:

#include <stdio.h>  
#include <malloc.h>  
#define MaxSize 50   
typedef int ElemType;  
typedef struct  
{  
    ElemType data[MaxSize];  
    int length;  
} SqList;   
void InitList(SqList *&L);//初始化线性表InitList(L)   
bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)   
void DispList(SqList *L);//输出线性表DispList(L)   
bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)   
//初始化线性表InitList(L)   
void InitList(SqList *&L)   //引用型指针   
{  
    L=(SqList *)malloc(sizeof(SqList));  
    //分配存放线性表的空间   
    L->length=0;  
}  
//判定是否为空表ListEmpty(L)   
bool ListEmpty(SqList *L)  
{  
    return(L->length==0);  
}    
//输出线性表DispList(L)   
void DispList(SqList *L)  
{  
    int i;  
    if (ListEmpty(L)) return;  
    for (i=0; i<L->length; i++)  
        printf("%d ",L->data[i]);  
    printf("\n");  
}   
//插入数据元素ListInsert(L,i,e)   
bool ListInsert(SqList *&L,int i,ElemType e)  
{  
    int j;  
    if (i<1 || i>L->length+1)  
        return false;   //参数错误时返回false   
    i--;            //将顺序表逻辑序号转化为物理序号   
    for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置   
        L->data[j]=L->data[j-1];  
    L->data[i]=e;           //插入元素e   
    L->length++;            //顺序表长度增1   
    return true;            //成功插入返回true   
}   
int main()  
{  
    SqList *sq;  
    InitList(sq);  
    ListInsert(sq, 1, 5);  
    ListInsert(sq, 2, 3);  
    ListInsert(sq, 1, 4);  
    DispList(sq);  
    return 0;  
}

运行结果:

知识点总结:

        链表的描述是抽象的,把抽象思维具体化,可以更好地学习。

学习心得:

       学习注重学习方法,好的学习方法能够提高学习效率。

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