线性表【项目 - 求集合并集C语言】(带注释)
#include <stdio.h>
#define MAXSIZE 50
//您也可以使用 typedef 來為用戶自定義的數據類型取一個新的名字。例如,您可以對結構體使用 typedef 來定義一個新的數據類型名字,然后使用這個新的數據類型來直接定義結構變量
//typedef struct Books
//{
// ? char ?title[50];
// ? ? ?char ?author[50];
// ? ? ? ? char ?subject[100];
// ? ? ? ? ? ?int ? book_id;
// ? ? ? ? ? ?} Book;
//來源:http://www.runoob.com/cprogramming/c-typedef.html
typedef struct node
{
int data[MAXSIZE];
int length;
}SeqLink;
int len1;
int len2;
int arr[MAXSIZE];
void SeqLinkInit(SeqLink *L)//初始化
{
L->length = -1;
}
int CreatSeqLink(SeqLink *L)//創建順序表
{
while (1)
{
if (MAXSIZE-1 < ++L->length)
{
printf("表滿!\n");
return 0;
}
scanf("%d", &L->data[L->length]);
if (0 == L->data[L->length])
{
break;
}
}
return L->length;
}
void A(SeqLink *L1, SeqLink *L2)//求交集
{
int i, j;
int count = 0;
for (i=0; i<len1; i++)
{
for (j=0; j<len2; j++)
{
if (L1->data[i] == L2->data[j])
{
arr[count++] = L1->data[i];
break;
}
}
}
}
void B(SeqLink *L1, SeqLink *L2)//求并集
{
int i, j;
int num;
int flag;
int count = 0;
for (i=0; i<len1; i++)
{
arr[count++] = L1->data[i];
}
num = count;
for (i=0; i<len2; i++)
{
flag = 1;
for (j=0; j<num; j++)
{
if (arr[j] == L2->data[i])
{
flag = 0;
break;
}
}
if (1 == flag)
{
arr[count++] = L2->data[i];
}
}
}
void Output(void)//輸出
{
int i;
for (i=0; arr[i]!=0; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void main(void)
{
SeqLink L1;
SeqLink L2;
SeqLinkInit(&L1);
SeqLinkInit(&L2);
printf("請輸入集合A:(按0結束輸入)\n");
len1 = CreatSeqLink(&L1);
printf("請輸入集合B:(按0結束輸入)\n");
len2 = CreatSeqLink(&L2);
A(&L1, &L2);
printf("A與B交集為:\n");
Output();
B(&L1, &L2);
printf("A與B并集為:\n");
Output();
}
?
總結
以上是生活随笔為你收集整理的线性表【项目 - 求集合并集C语言】(带注释)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 艋舺电影片段(锰钾)
- 下一篇: 埃塞俄比亚首都是哪里(埃塞俄比亚首都)