• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: C/C++
  • 标签: 单链表  并集  交集  

资源简介

实现单链表的并集与交集的程序,程序首先由用户指定输入两个任意长短的单链表,然后程序将这两个单链表的并集和交集求出来并显示。程序里面包含了单链表的头插法和尾插法两种操作。

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#define maxSize 100



//定义单链表
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;

void printList(LNode *p);

//创建单链表
LNode * createList(int n){
LNode *p*current;
p = (LNode*)malloc(sizeof(LNode));
p->next=NULL;
current = p;
int numivalue;
num = n;
for(i=0;i LNode *q;
q = (LNode*)malloc(sizeof(LNode));
printf(“请输入单链表第%d个元素的值:“i+1);
scanf(“%d“&value);
q->data=value;
current->next=q;
current=current->next;
q->next=NULL;

}
printf(“\n单链表创建完成!\n“);
return p;
}

//将值插入到单链表的尾部(尾插法)
LNode * insertListFoot(LNode *pint n){
LNode *s*t;
s = (LNode *)malloc(sizeof(LNode)); //建立一个带头结点的单链表
s->data = n;
s->next = NULL;
if(p->next!=NULL){
t=p->next;
}else{
t=p;
}

while(t->next!=NULL){ //循环结束后,t指向单链表的末尾结点
t=t->next;
}
t->next = s; //尾结点的指针指向插入值的结点

return p;

}

//将值插入到单链表的头部(头插法)
LNode * insertListHead(LNode *pint n){

LNode *s;
s = (LNode *)malloc(sizeof(LNode)); //建立一个带头结点的单链表
s->next=NULL;
s->data=n;
s->next=p->next;
p->next=s;

return p;

}



//查找是否存在某元素
bool isPresent(LNode *pint n){
p = p->next;
while(p!=NULL){
if(p->data == n){
return 1;
}
p = p->next;
}

return 0;
}

//求并集
LNode * unionList(LNode *p LNode *q){
LNode *s*t*currentS*currentP*currentQ;
s = (LNode*)malloc(sizeof(LNode)); //建立一个带头结点的新链表s
s->next=NULL;

t=p->next;
//s1=s;
while(t){ //将单链表A中的所有元素插入到新的单链表S中
s = insertListFoot(st->data);
t=t->next;
}
currentS = s;

currentP = p->next;
currentQ = q->next;


while(currentQ){ //循环遍历单链表B,如果单链表B中有元素在单链表S中找不到,则插入到单链表S中
if(!isPresent(currentSc

评论

共有 条评论