您的位置:首页 > 其它

数组表示的线性表(顺序表)的基本操作,以及合并两个非递减数组线性表

2016-04-23 15:54 337 查看
1、定义线性表节点的结构,并定义节点的型和位置的型。

2、定义线性表的基本操作

3、在1,2的基础上,完成本题。

4、在main函数中进行测试:先构建两个有序的线性表,然后合并这两个线性表。

#include <iostream>

using namespace std;

#define maxsize 100

typedef int Elementtype;

struct List

{

Elementtype element[maxsize+1];

int last;

};

void Listini(List &L)

{

for(int i=1;i<=maxsize;i++)

{

L.element[i]=0;

}

L.element[0]=NULL;

L.last=0;

}

typedef Elementtype position;

position End(List L)

{

return (L.last+1);

}//返回last+1

void Insert(Elementtype x,position p,List &L)//把x插入到L表的P处

{

position q;

if(L.last>=maxsize-1)

cout<<"链表空间已满";

else if(p>L.last+1||p<1)

cout<<"选择的位置不存在";

else{

for( q=L.last;q>=p;q--)

L.element[q+1]=L.element[q];//将p位置后的元素向后移动一位

L.last=L.last+1;//last要调整

L.element[p]=x;

}

}

void Delete(position p,List &L)

{

position q;

if(p<1||p>L.last+1)

{

cout<<"选择的位置不存在";

}

else

{

for(q=p;q<L.last;q++)

{

L.element[q]=L.element[q+1];

}

L.last=L.last-1;

}

}

void prtList(List &L)

{

cout<<"链表的数据内容如下:"<<endl;

for(int i=1;i<=L.last;i++)

cout<<L.element[i]<<"\t";

cout<<endl;

}

List merList(List &L1,List &L2)

{

List L3;

Listini(L3);

L3.last=L1.last+L2.last;

int i=1;//链表一的第一个结点

int j=1;//链表二的第一个结点

int k=1;//待合并的链表第一个结点

while(i<L1.last&&j<L2.last)

{

if(L1.element[i]<L2.element[j])

{

L3.element[k]=L1.element[i];

i++;

k++;

}

else

{

L3.element[k]=L2.element[j];

j++;

k++;

}

}

while(i<=L1.last)

{

L3.element[k++]=L1.element[i++];

}

while(j<=L2.last)

{

L3.element[k++]=L2.element[j++];

}

return L3;

}

void main()

{

int x;

List L1,L2,L3;

Listini(L1);

Listini(L2);

Listini(L3);

cout<<"请输入五个数据来给第一个线性表赋值:"<<endl;

for(int i=0;i<5;i++)

{

cin>>x;

Insert(x,i+1,L1);

}

cout<<"请输入五个数据来给第e二个线性表赋值:"<<endl;

for(int j=0;j<5;j++)

{

cin>>x;

Insert(x,j+1,L2);

}

prtList(L1);

prtList(L2);

L3=merList(L1,L2);

prtList(L3);

system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: