用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+&#