第三周项目一(3) 线性表的修改

来源:互联网 发布:java 神经网络框架 编辑:程序博客网 时间:2024/06/06 01:06

问题及代码

/*    *Copyright(c)2017,烟台大学计算机学院    *All right reserved.    *文件名:main.cpp list.h list.cpp   *作者:王万兴    *完成日期:2017年9月20日    *版本号:v1.0    *    *问题描述:线性表的修改  *输入描述:无  *程序输出:见窗口 */#include "list.h"#include "stdio.h"int main(){    SqList *sq;    InitList(sq);    ListInsert(sq, 1, 5);    ListInsert(sq, 2, 3);    ListInsert(sq, 1, 4);    DispList(sq);    return 0;}void InitList(SqList *&L)   //引用型指针{    L=(SqList *)malloc(sizeof(SqList));    //分配存放线性表的空间    L->length=0;}void DestroyList(SqList *&L){    free(L);}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}bool ListDelete(SqList *&L,int i,ElemType &e){    int j;    if (i<1 || i>L->length)  //参数错误时返回false        return false;    i--;        //将顺序表逻辑序号转化为物理序号    e=L->data[i];    for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移        L->data[j]=L->data[j+1];    L->length--;              //顺序表长度减1    return true;              //成功删除返回true}
运行结果



知识点总结

线性表元素的插入有三种情况,在头插入,在尾插入和中间插入,相应的要移动插入元素后面元素的位置,尾插不需要移动。

原创粉丝点击