线性表【项目 - 求集合并集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语言】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xshell无法启动:要继续使用此程序,
- 下一篇: 爱的健身房(说一说爱的健身房的简介)