数据结构 实验二:(线性表实验-顺序存储) 代码部分
数据结构 实验二:(线性表实验-顺序存储)
实验内容:
内容
问题描述:
编制一个能演示将两个有序表合并为一个有序表的程序。
基本要求:
已知递增有序线性表LA和LB,现将LA和LB合并到LC,LC也是递增有序的。
代码:
/*时间:2021/03/21 作者:瑞雪流年功能:1.实现将线性表LA=(3,5,8,11) 、 LB=(2,6,8,9,11,15,20)合并到LC,其中LC也是递增有序的。
*/
#include
const int MaxSize=100;
using namespace std;
typedef int ElemType;//声明线性表的顺序存储类型
typedef struct
{ElemType data[MaxSize]; //存放线性表中的元素 int length; //存放线性表的长度 int *elem;int len;int size;
}SqList; //顺序表类型 //建立顺序表
void CreateList(SqList *&A,ElemType c[],int n) //由c中的n个元素建立顺序表
{int i; A=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间 for(i=0;i<n;i++) //使用for循环 A->data[i]=c[i]; //将元素c[i]存放到L中 A->length=n; //设置L的长度n
}// 两个线性表取交集,并将元素按照从小到大排序
void UnionList(SqList *&L,SqList *&R,SqList *&E)
{int i,j,k;E=(SqList *)malloc(sizeof(SqList)); //第一部分:两个线性表进行比较,谁的值小谁的值赋值到E中 for(i=0,j=0,k=0;i<L->length && j<R->length;k++){if(L->data[i]<R->data[j])E->data[k]=L->data[i++];else if(R->data[j]<L->data[i])E->data[k]=R->data[j++];else if(R->data[j]==L->data[i])E->data[k]=L->data[i++],j++;}//第二部分:两个线性表比较结束,剩余的值直接赋值到E中去 while(i<L->length)E->data[k++]=L->data[i++];while(j<R->length)E->data[k++]=R->data[j++];E->length=k;
}//输出线性表Displist(E)
void DispList(SqList *&E)
{int i;for(i=0;i<E->length;i++) //扫描顺序表输出各元素值 cout << E->data[i] << " "; //输出语句 cout << endl;
}//------------------------分界符------------------------//主函数
int main()
{SqList *L,*R,*E;ElemType a[]={3,5,8,11},b[]={2,6,8,9,11,15,20};CreateList(L,a,4);CreateList(R,b,7);UnionList(L,R,E);printf("经运算,两个线性表合并之后,并奖合并结果中的元素按升序排列为:\n") ;DispList(E);return 0;
}
运行图片

转载请标明出处
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
