您的位置:首页 > 其它

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

2017-09-20 19:08 141 查看
问题及代码

/*
*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
}运行结果



知识点总结

线性表元素的插入有三种情况,在头插入,在尾插入和中间插入,相应的要移动插入元素后面元素的位置,尾插不需要移动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: