关于C语言实现数据结构的题目
顺序表问题:LALB的并集和LALB的交集的差,中文描述,就是顺序表B中一个个存储的元素在A中找,要是找到就在A中删去该元素,如果找不到就在顺序表A的末尾加上该元素,因为...
顺序表问题:LALB的并集和LALB的交集的差,中文描述,就是顺序表B中一个个存储的元素在A中找,要是找到就在A中删去该元素,如果找不到就在顺序表A的末尾加上该元素,因为初学数据结构,能看的懂,但是写实在是大问题,求各位高手规范一点写一个让我好好研究下
展开
展开全部
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void Function(char *p1,char *p2,int &l1,int &l2)
{
for(int i=0;i<l2;i++)
{
bool sign=false;
for(int j=0;j<l1;j++)
{
if(p2[i]==p1[j]) //如果lb中的某个字符在la中出现过
{
for(int k=j;k<l1;k++)
p1[k]=p1[k+1]; //把la中从这个字符开始,后一个位置覆盖前一个位置
l1--; //把la的长度减一
sign=true;
break;
}
}
if(!sign) //如果lb中的某个字符没有在la中出现过
{
p1[l1]= p2[i]; //把这个字符放在la的末尾
l1++;
}
}
}
int main()
{
char la[1024]="renzhicu" ;
char lb[1024]="xingbesha";
int lalength=strlen(la);
int lblength=strlen(lb);
Function(la,lb,lalength,lblength);
printf("%s",la);
system("pause");
return 0;
}
#include <stdlib.h>
#include <math.h>
void Function(char *p1,char *p2,int &l1,int &l2)
{
for(int i=0;i<l2;i++)
{
bool sign=false;
for(int j=0;j<l1;j++)
{
if(p2[i]==p1[j]) //如果lb中的某个字符在la中出现过
{
for(int k=j;k<l1;k++)
p1[k]=p1[k+1]; //把la中从这个字符开始,后一个位置覆盖前一个位置
l1--; //把la的长度减一
sign=true;
break;
}
}
if(!sign) //如果lb中的某个字符没有在la中出现过
{
p1[l1]= p2[i]; //把这个字符放在la的末尾
l1++;
}
}
}
int main()
{
char la[1024]="renzhicu" ;
char lb[1024]="xingbesha";
int lalength=strlen(la);
int lblength=strlen(lb);
Function(la,lb,lalength,lblength);
printf("%s",la);
system("pause");
return 0;
}
更多追问追答
追问
如果我不是直接覆盖,采用删除呢?怎么写啊
追答
覆盖的效果不就是删除吗?删除我不太明白是什么意思,这课是连续空间上的操作,难道要把内存地址删除吗?连续空间的删除一般都是用覆盖实现的
2014-03-09
展开全部
先把顺序表当做数组来写代码,然后涉及到数组的地方都改成线性表,就可以了。
具体的就不写了,有点费时间。
具体的就不写了,有点费时间。
追问
我就是一直写不好才来问诶
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询