最後一次資料結構上機(11.7)
阿新 • • 發佈:2018-11-07
第一題單鏈表
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; }