概述
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我不太会把算法写成可运行的程序,求大神指点
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
int data[MAXSIZE];
int length;
typedef struct Node{
int data[MAXSIZE];
int length;
}SeqList,*PSeqList;
PSeqList PL;
PSeqList Init_SeqList(void)
{ PSeqList PL;
PL=(PSeqList)malloc(sizeof(SeqList));
if(PL)
PL->length=0;
return(PL);
}
int Location_SeqList(PSeqList L, int x)
{ int i=0;
while(ilength && L->data[i]!=x)
i++;
if(i>=L->length)
return 0;
else return(i+1);
}
int Insert_SeqList(PSeqList PL,int i,int x)
{
int j;
if(!PL)
{printf("不存在");
return(-2);
}
if(PL->length>=MAXSIZE)
{printf("表溢出");
return(-1);
}
if(i<1||i>PL->length+1)
{printf("插入位置不合法");
return(0);
}
for(j=PL->length-1;j>=i-1;j--)
PL->data[j+1]=PL->data[j];
PL->data[i-1]=x;
PL->length++;
return(1);
}
int Delete_SeqList(PSeqList PL,int i)
{
int j;
if(!PL)
{printf("表不存在");
return(-1);
}
if(i<1||i>PL->length)
{printf("插入位置不合法");
return(0);
}
for(j=i;jlength;j++)
PL->data[j-1]=PL->data[i];
PL->length--;
return(1);
}
void intersect(PSeqList A,PSeqList B) //入口参数:指向顺序表的指针,返回值:无
//结果存放在数据表A中
{int i=0;
while(ilength)
{if(!Location_SeqList(B,A->data[i])) //如果B中无A中元素
Delete_SeqList(A,i+1);
else i++; //考察下一个元素
}
}
void Mergesect(PSeqList A,PSeqList B)
{int i=0;
for(i=0;ilength;i++)
{if(!Location_SeqList(A,B->data[i])) //如果A中没有B中的元素
Insert_SeqList(A,A->length+1,B->data[i]);//在A中加入B的元素
}
}
int main()
{PSeqList A,B;
int i;
Init_SeqList();
Insert_SeqList(A,int A->length+1,int B->data[i]);
Location_SeqList(A,int B->data[i]);
Location_SeqList(B,int A->data[i]);
Delete_SeqList( A,int i+1);
intersect(A,B);
printf("交集:n");
Mergesect(A,B);
printf("并集:n");
}
最后
以上就是清新翅膀为你收集整理的c语言线性表求交集并集,线性表,求两个集合的交并集的全部内容,希望文章能够帮你解决c语言线性表求交集并集,线性表,求两个集合的交并集所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复