当前位置: 首页 > news >正文

数据结构中三表合一的实现

任务描述:La表的数据(3,5,8,11) Lb表的数据是(2,6,8,9,11,15,20)将La中的数据和Lb的数据按顺序依次插入到Lc中 但是要为Lc至少初始化一个数据 否则就插不进去 不知道怎么改 而且display()还是返回状态结果。


 

#include <iostream>
//包含文件
using namespace std;

#define LIST_INIT_SIZE 100 
//初始化分配量

#define LISTINCREMENT 10 
//存储空间的分配增量


typedef int status;
//存储结构的类型定义 返回函数的状态结果代码
typedef int ElemType;
//数据元素/結点的表示 这个是用户自定义的数据类型 用于结点
typedef struct{

	ElemType *elem;//结点的储存空间首地址

	int length;//当前长度

	int listsize;//当前的分配的存储容量 (以sizeof (ElemType)为单位)
}IntNode; //相当于在java中定义了一个叫IntNode的结点类

status IntList(IntNode &L)
{//这个函数实现的是构建一个空线性表 在这之前我们要为其分配100个ElemType大小的



	L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
	//分配100个ElemType大小的存储空间,并把地址分配给指向ElemType的指针elem

if(!L.elem)

		exit(0);//如果没有分配成功 那么存储失败

	L.length = 0;//长度为0

	L.listsize = LIST_INIT_SIZE;//初始容量是100

	return true;

}

status InsertList(IntNode &L,int n)
{


	cout<<"请输入数据"<<endl;

	for(int i =0;i<n;i++)
	{
		cin>>L.elem[i];

		++L.length;
	
		if(L.length>=L.listsize)
		{
 
			ElemType * newbase;

			newbase = (ElemType *)realloc(L.elem,

(L.listsize+LISTINCREMENT)*sizeof(ElemType));

			if(!newbase)

				exit(0);
			
			L.elem= newbase;
			

			L.length+=LISTINCREMENT;
			//这段代码的意思是 当线性表的长度小于最大分配的空间时 

//你就要重新分配出110的分配空间 并将指针赋给newbase

		}
	}

	return true;

}

status ListLength(IntNode &L)
{
 
	
		
		int answer;

		for(int i =0;i<L.length;i++)
		{
			answer++;
		}

	

		return L.length;
}

status  ListInsert(IntNode &L,int i,ElemType e)
{//在i的位置之前插入e元素 并使L的长度增加
//有了前置条件 i必须是不超出线性表范围的    1<=i<=L.length+1

	if(i>L.length||i<0)

		return false;

			if(L.length>=L.listsize)
		{
 
			ElemType * newbase;

			newbase = (ElemType *)realloc(L.elem,

(L.listsize+LISTINCREMENT)*sizeof(ElemType));

			if(!newbase)

				exit(0);
			
			L.elem= newbase;
			

			L.length+=LISTINCREMENT;
			//这段代码的意思是 当线性表的长度小于最大分配的空间时 

//你就要重新分配出110的分配空间 并将指针赋给newbase

		}

			ElemType *p =&(L.elem[i-1]);//指定的位置

			

			for(ElemType *q = &(L.elem[L.length-1]);q>=p;--q)

			{
				*(q+1)=*(q);//插入位置及之后的元素右移
			}
				*p =e;

			

				++L.length;

			

				return true;
		


}

status GetElem(IntNode &L,int i) {

	
		ElemType *p =  & (L.elem[i-1]);

		ElemType e = *p;

		return e;

	}

status LocateElem(IntNode &L,ElemType e)
{
	ElemType *p =&(L.elem[0]);//首位置

	for(ElemType *q = &(L.elem[L.length-1]);p<=q;p++)
	{
		if(e==*p)

		return true;

	}

	return false;
}

status display(IntNode &L,int n){

	 for ( int i = 0; i <=n ; i ++)
	 {
		 cout << L.elem[i]<< "  ";
	 }


	 return true;
	
 }


 int main()
 {


	 IntNode La;

	 IntNode Lb;

	 IntNode Lc;


	 IntList(La);
	 IntList(Lb);
	 IntList(Lc);


	 InsertList(Lc,1);

	


	 InsertList(La,4);

	 InsertList(Lb,7);


	 int i =1;

	 int j =1;

	 int k =0;


     ElemType e = GetElem(La,1);


	while(i<=La.length&&j<=Lb.length)
	{

		ElemType e1 = GetElem(La,i);

		ElemType e2 = GetElem(Lb,j);


		if(e1<=e2)
		{

			ListInsert(Lc,++k,e1);

			++i;
		}

		else
		{

			ListInsert(Lc,++k,e2);

			++j;
		}
	
	}

	while(i<=La.length)
	{
	

	ElemType e3 = GetElem(La,i++);

		ListInsert(Lc,++k,e3);
	}

		while(j<=Lb.length)
	{
	

	ElemType e4 = GetElem(Lb,j++);

		ListInsert(Lc,++k,e4);
	}


	cout<<display(Lc,11)<<endl;
	
	 cout<<endl;

	 return 0;
	 


 }


 


 

转载于:https://www.cnblogs.com/james1207/p/3315300.html

相关文章:

  • 雷电
  • CSLA - 介绍以及学习资料
  • 软粒子
  • gamma空间
  • python中库引用与import
  • 一道有趣的面试题
  • msg to msg
  • sql sever 触发器的概念和使用
  • unity——OnRenderImage深度解读
  • LOD and Reflections Adding Details
  • C-Lodop提示Access violation at address ...in module 'CLodopPrint32.exe' write of address
  • jQuery get post 碎片(远程html)加载
  • 天空盒的绘制
  • webbrowser登录-无id
  • 一秒钟后执行
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Cumulo 的 ClojureScript 模块已经成型
  • Facebook AccountKit 接入的坑点
  • Java 多线程编程之:notify 和 wait 用法
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java程序员幽默爆笑锦集
  • Laravel Mix运行时关于es2015报错解决方案
  • pdf文件如何在线转换为jpg图片
  • SQLServer之创建显式事务
  • uva 10370 Above Average
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 理解在java “”i=i++;”所发生的事情
  • 前端工程化(Gulp、Webpack)-webpack
  • 深入 Nginx 之配置篇
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 携程小程序初体验
  • #DBA杂记1
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (8)STL算法之替换
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (一)UDP基本编程步骤
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .net Stream篇(六)
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 验证控件和javaScript的冲突问题
  • .NET 指南:抽象化实现的基类
  • .NET建议使用的大小写命名原则
  • .Net中ListT 泛型转成DataTable、DataSet
  • ::before和::after 常见的用法
  • @ResponseBody
  • []我的函数库
  • [Angular 基础] - 数据绑定(databinding)
  • [BZOJ] 3262: 陌上花开
  • [BZOJ1008][HNOI2008]越狱
  • [C++] sqlite3_get_table 的使用
  • [CISCN2019 华东南赛区]Web4