用C语言求线性表交集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言求线性表交集相关的知识,希望对你有一定的参考价值。
希望高手指教
参考技术A 假如两个线性表listA和listB。新建空线性表listC;然后,依次取listA中的元素与listB中每一个元素相比,将相同的追加到listC;最后得到的listC就是listA和listB的交集了~(线性表的存储结构不同,实现也不同,大概就这样吧~) 参考技术B 线性表 是一个 整体,线性表分链表、宅、队列等,另外你又说交集,是数学的交集吗,是两个表的交吗?线性表的实现--用通用方法实现线性表的初始化求表长插入元素删除元素等
//线性表的通用程序,c语言实现
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef char DataType;
typedef struct node
DataType data[MaxSize]; int last;
Lnode,*List;
//初始化线性表
void Init_List(List L)
L->last = 0;
//线性表的长度
int Length_List(List L)
return L->last;
//取表中元素
DataType Get_List(List L, int i, DataType x)
if (i<1 || i>L->last)
printf("error!!!");
else
x = L->data[i-1]; return x;
//查找表L中值为x的元素,其结果返回在表L中首次出现的值为x元素的序号或地址
DataType Location_List(List L, DataType x)
int i = 0;
while (i < L->last && L->data[i] != x)
i++;
if (i == L->last)
return -1;
else
return (i + 1);
//在线性表的第i个位置插入值为x人元素
void Insert_List(List L, int i, DataType x)
int j;
if (i<1 || i>L->last + 1)
printf("插入位置错!!!\n");
else
for (j = L->last; j >= i; j--)
L->data[j] = L->data[j - 1];
L->data[i - 1] = x;
L->last++;
//删除线性表第i个位置上的元素
void Delete_List(List L, int i)
int j;
if (i<1 || i>L->last)
printf("del error");
else
for (j = i; j < L->last; j++)
L->data[j - 1] = L->data[j];
L->last--;
//输出线性表
void Print_List(List L)
int i;
for (i = 1; i < L->last; i++)
printf("%c->",L->data[i-1]);
printf("%c",L->data[L->last-1]);
///////////////主函数////////////////
void main()
int i = 1, n;
Lnode L;
char ch, x;
Init_List(&L);
printf("\n\n\n***************线性表演示程序****************\n");
printf("请输入您想建立的线性表的元素,以#结束:");
ch = getchar();
while (ch != ‘#‘)
Insert_List(&L,i,ch);
i++;
ch = getchar();
printf("你建立的线性表为:");
Print_List(&L);
printf("\n线性表的长度为:%d",L.last);
//fflush(stdin);
printf("\n输入你想查找的元素:");
fflush(stdin);
scanf("%c",&x);
printf("你查找的元素为%c序位为%d\n",x,Location_List(&L,x));
printf("输入你想查找的元素序位:");
scanf("%d",&n);
printf("\n你查找的元素为:%c\n",Get_List(&L,n,x));
printf("输入你想插入的元素以及序位:<用逗号隔开>");
fflush(stdin);
scanf("%c,%d",&x,&n);
Insert_List(&L,n,x);
printf("\n插入后的线性表为:\n");
Print_List(&L);
fflush(stdin);
printf("\n请输入你想删除的元素序位:");
scanf("%d",&n);
Delete_List(&L,n);
printf("\n删除后的线性表为:\n");
Print_List(&L);
printf("\n");
system("pause");
以上是关于用C语言求线性表交集的主要内容,如果未能解决你的问题,请参考以下文章