用c语言去实现线性表的合并,删除重复(不重新排序)
老师留了一个作业,有两个集合A和B,设A={7,5,3,11},B={2,6,3},合并后A={7,5,3,11,2,6}
自己没有思路百度了好久,找到的大多都是其他语言的,要不就是直接重新排序的。硬着头皮写出来了,经历了无数次修改,写成了一个小小代码(自己感觉写的一塌糊涂,幸运的是还能运行)。然后发出来了来给大家提供一点微不足道的思路,也算是记录自己学习的一个过程吧。
上代码!
先来段我自己写的一塌糊涂代码
#include <stdio.h>
#define MAXSIDE 100
void ListOutput(int *a,int *b , int m)
{
int i, j, k, h = 0, g = 0,c[MAXSIDE];
for (i = 0; *(a + i) != 0 ; i++)
{
for( j = 0 ; *( b + j ) != 0 ; j++)
if(*(a+i)==*(b+j))//比较A和B找到相等项时,把此项在数组b中的位置存到a中
{
g=c[h];
h++;
break;//跳出循环
}
}
for( k = 0,h = 0 ; *(a + k) != 0 ; k++)
if(k != c[h])//当B里面的值的序号不等于刚刚提取出来的,在A的实际存储长度后,存储B的值
*( b + m + k) = *( a + k );
else h++;
}
int Listlength(int *a) //返回A实际存储长度
{
int m;
for( m = 0 ; *(a + m) != 0 ; m++);
return m;
}
int main()
{
int A[MAXSIDE] = {7,5,3,11},B[MAXSIDE] = {2,6,3} , n , m ;
m = Listlength(A) ;
ListOutput(B , A , m);
for (n = 0; n<6; n++)//循环

本文介绍如何使用C语言合并两个线性表并去除重复元素,不涉及重新排序。作者分享了自己尝试解决此问题的过程,包括代码及运行截图,并对比了老师的C++解决方案。希望能为读者提供思路,同时期待大佬的指导。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



