第一题单链表
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;
}