数据结构线性表的插入删除

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
raverse(Lb,visit); Bing(La,Lb); cout<<"La0= "; ListTraverse(La,visit); cout<<"插入数据元素位置:"; cin>>x; cout<<"需要插入的元素;"; cin>>y; ListInsert(La,x,y); cout<<"La1="; ListTraverse(La,visit); cout<<"删除数据元素位置:"; cin>>x; cout<<"需要删除的元素;"; cin>>y; ListDelete(La,x,y); cout<<"La2="; ListTraverse(La,visit);
int LocateElem(SqList &L, ElemType &e, int equal(ElemType &,
ElemType &))
//算法 2.6
{ // 初始条件:顺序线性表 L 已存在,compare()是数据元素判定函数(满足为 1,否则
为 0)
{ cout<<"please input a number"; cin>>x; ListInsert(La,i,x); } cout<<"La= "; ListTraverse(La,visit); InitList(Lb); cout<<"n="; cin>>n; for(i=1;i<=n;i++) { cout<<"please input a number"; cin>>y; ListInsert(Lb,i,y); } cout<<"Lb= "; ListT
*(p+1)=*p;
*q=e;
++L.Length;
}//ListInsert void ListDelete(SqList &L,int i,ElemType &e) { int *p,*q; if((i<1)||(i>L.Length)) return ERROR; p=&(L.elem[i-1]); e=*p; q=L.elem+L.Length-1; for(++p;p<=q;++p) *(p-1)=*p; --L.Length;
// 操作结果:返回 L 中第 1 个与 e 满足关系 compare()的数据元素的位序。
// 若这样的数据元素不存在,则返回值为 0。算法 2.6
ElemType *p;
int i=0; // i 的初值为第 1 个元素的位序
p=L.elem; // p 的初值为第 1 个元素的存储位置
while(i<=L.Length&&!equal(*p++,e))
if (!newbase)
cout<<"overflow";
L.elem=newbase;
L.Listsize+= LISTINCREMENT;
}
q=&(L.elem[n-1]);
for(p=&(L.elem[L.Length-1]);p>=q;p--)
} void InitList(SqList &L)//定义
{ L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));//分配空间 if(!L.elem)exit(0);//空间存储失败 L.Length=0; //空间长度为 0 L.Listsize=LIST_INIT_SIZE;//初始空间长度
ElemType g;
Biblioteka Baidu
if (n<1||n>L.Length+1)
return (0);
if (L.Length>=L.Listsize)
{
int
*
newbase=(ElemType
*)realloc(L.elem,(L.Listsize+LISTINCREMENT )*sizeof(ElemType));
++i;
if(i<=L.Length)
return i;
else
return 0;
}
void Bing(SqList &La,SqList &Lb) {//将所有在线性表中 Lb 中但不在 La 中的数据元素插入到 La 中
int i; ElemType e; int La_len=La.Length; int Lb_len=Lb.Length;//求线性表的长度
数据结构线性表的插入删除
#include<iostream> using namespace std; #define LIST_INIT_SIZE 50 #define LISTINCREMENT 50 #define ERROR typedef int ElemType; struct SqList { ElemType *elem; int Length; int Listsize; };
void GetElem(SqList &L,int &n,ElemType &e) { int *q=&(L.elem[n-1]); e=*q; } int ListInsert(SqList &L,int &n,ElemType &e) //定义插入函数 { int *p,*q,*newbase;
}//InitList
void visit(ElemType aa) { cout<<aa; } void ListTraverse(SqList &L, void visit(ElemType aa) ) { int i;
ElemType e; for( i=1;i<=(L.Length);i++) { GetElem(L,i,e); visit(e); } } int equal(ElemType &a,ElemType &b) { if(a==b) return 1; else return 0; }
}
for(i=1;i<=Lb_len;i++) { GetElem(Lb,i,e);
if(!LocateElem(La,e,equal)) ListInsert(La,++La_len,e);
} } void main() { SqList La,Lb; int i,x,y,g; int m,n,k; k=0; InitList(La); cout<<"m="; cin>>m; for(i=1;i<=m;i++)
相关文档
最新文档