资源简介
实现单链表的并集与交集的程序,程序首先由用户指定输入两个任意长短的单链表,然后程序将这两个单链表的并集和交集求出来并显示。程序里面包含了单链表的头插法和尾插法两种操作。
代码片段和文件信息
#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
- 上一篇:数据结构 用哈希表做的通讯录
- 下一篇:QUEUE.CPP
评论
共有 条评论