• 线性表之有序表


             所谓有序表,是指这样的线性表,其中所有的元素以递增或递减的方式排列,并且规定有序表中不存在元素值相同的元素!

    #include<iostream>
    using namespace std;
    
    int ListInsert(SqList *&L,ElemType e)   //用顺序表存储有序表,只有ListInsert()有所差异,其余相同
    {
    	int i=0,j;
    	while(i<L->length&&L->data[i]<e)
    		i++;
    	if(L->data[i]==e)
    		return 0;
    	for(j=ListLength(L);j>i;j--)
    		L->data[j]=L->data[j-1];
    	L->data[i]=e;
    	L->length++;
    	return 1;
    }
    
    //将有序表LA和LB合并成一个有序表LC,要求不破坏原有表的LA和LB   p54例题2.11
    
    void UnionList(SqList *LA,SqList *LB,SqList *&LC) //采用顺序表存储有序表
    {
    	int i=0,j=0,k=0;
    	LC=(SqList *)malloc (sizeof(SqList));
    	LC->length=0;
    	while(i<LA->length&&j<LB->length)
    	{
    		if(LA->data[i]<LB->data[j])
    		{
    			LC->data[k]=LA->data[i];
    			i++;
    			k++;
    		}
    		else
    		{
    			LC->data[k]=LB->data[j];
    			j++;
    			k++;
    		}
    	}
    	while(i<LA->length)
    	{
    		LC->data[k]=LA->data[i];
    		i++;
    		k++;
    	}
    	while(j<LB->length)
    	{
    		LC->data[k]=LB->data[j];
    		i++;
    		j++;
    	}
    	LC->length=k;
    }
    
    void UnionList(LinkList *LA,LinkList *LB,LinkList *&LC)
    {
    	LinkList *pa=LA->next;
    	LinkList *pb=LB->next;
    	LinkList *pc,*s;
    	LC=(LinkList *)malloc (sizeof(LinkList));
    	pc=LC;
    	while(pa!=NULL&&pb!=NULL)
    	{
    		if(pa->data<pb->data)
    		{
    			s=(LinkList *)malloc(sizeof(LinkList));
    			s->data=pa->data;
    			pc->next=s;
    			pc=s;
    			pa=pa->next;
    		}
    		else
    		{
    			s=(LinkList *)malloc(sizeof(LinkList));
    			s->data=pb->data;
    			pc->next=s;
    			pc=s;
    			pb=pb->next;
    		}
    	}
    	while(pa!=NULL)
    	{
    		s=(LinkList *)malloc(sizeof(LinkList));
    		s->data=pa->data;
    		pc->next=s;
    		pc=s;
    		pa=pa->next;
    	}
    	while(pb!=NULL)
    	{
    		s=(LinkList *)malloc(sizeof(LinkList));
    		s->data=pb->data;
    		pc->next=s;
    		pc=s;
    		pb=pb->next;
    	}
    	pc->next=NULL;
    }
    
    void Commnode(LinkList *&LA,LinkList *LB,LinkList *LC)//P55 例题2.12
    {
    	LinkList *pa=LA->next,*pb=LB->next,*pc=LC->next,*q,*r;
    	LA->next=NULL;
    	r=LA;
    	while(pa!=NULL)
    	{
    		while(pb!=NULL&&pa->data>pb->data)
    		{
    			pb=pb->next;
    		}
    		while(pc!=NULL&&pa->datapa->data>pc->data)
    		{
    			pc=pc->next;
    		}
    		if(pb!=NULL&&pc!=NULL&&pa->data==pb->data&&pa->data==pc->data)
    		{
    			r->next=pa;
    			r=pa;
    			pa=pa->next;
    		}
    		else
    		{
    			q=pa;
    			pa=pa->next;
    			free(q);
    		}
    	}
    	r->next=NULL;
    }
    


  • 相关阅读:
    python 安装预编译库注意事项-pip
    Lucene 入门需要了解的东西
    PHPSTORM 与 Xdebug 配合调试
    Windows 下命令行修改文件夹的控制权限 Cacls
    PHP 解压zip文件的函数封装
    PHP 关于回调的用法
    CentOS7 安装 swoole
    CentOS7 安装 scala 2.11.1
    PHP 代码质量检测工具的安装与使用
    PHP 新建动态类的代码
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3225972.html
Copyright © 2020-2023  润新知