最后一次数据结构上机(11.7)——两个集合取交集

第一题单链表

1)创建n个元素的单链表  void  create()

2)计算链表中大于x的节点个数int countx(int x)

3)创建两个链表,然后取交集

以下源代码:

head.h

#pragma once
#include<iostream>
#include<stdlib.h>
using namespace std;

list.h

#pragma once
#include"head.h"
int hashTable[100]={0};

typedef struct node
{
	int data;
	node *next;
}node;

class list
{
	node *head;
public:
	list(){}
	~list(){}
	void create(int n);
	void print();
	void search();
	void del();
	int countx(int x);
};

void list::del()
{
	bool hashTable_a[100]={false};
	node *p,*pa;
	p=head->next;
	while(p)
	{
		if(hashTable_a[p->data]==false)
		{
			hashTable_a[p->data]=true;
			pa=p;
			p=p->next;
		}
		else
		{
			pa->next=p->next;
			delete (p);
			p=pa->next;
		}
	}
}

void list::search()
{
	node *p;
	p=head->next;
	while(p)
	{
		hashTable[p->data]++;
		p=p->next;
	}
}

void list::create(int n)
{
	node *p;
	head=new node;
	head->next=NULL;
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		p=new node;
		p->data=a;
		p->next=head->next;
		head->next=p;
	}
}

void list::print()
{
	node *p;
	p=head->next;
	while(p)
	{
		cout<<p->data<<' ';
		p=p->next;
	}
	cout<<endl;
}

int list::countx(int x)
{
	node *p;
	p=head->next;
	int count=0;
	while(p)
	{
		if(p->data>x)
			count++;
		p=p->next;
	}
	return count;
}

main.cpp

#include"list.h"

int main(void)
{
	int n,m;
	cin>>n;
	list A;
	A.create(n);
	A.countx(2);
	A.del();
	A.search();
	cin>>m;
	list B;
	B.create(m);
	B.countx(2);
	B.del();
	B.search();
	for(int i=0;i<100;i++)
	{
		if(hashTable[i]==2)
			cout<<i<<' ';
	}
	cout<<endl;
	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:像素格子 设计师:CSDN官方博客 返回首页
评论

打赏作者

TIM33470348

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值