6:シーケンスの交差(チェーンテーブル)c++を求めます
9183 ワード
問題の説明:
先頭ノードを使用した単一チェーンテーブルのプログラミング:
2つのシーケンスがあり、それぞれ2つのセットを表します.
それらの交差を求めて出力します.
説明を入力:
1行目は、シーケンスAの情報を入力する.
1番目の整数n(0<=n<=100)は、n個の要素を共有し、その後n個の整数を表し、n個の要素を表すデータ
第1行は、シーケンスBの情報を入力する.
1番目の整数n(0<=n<=100)は、n個の要素を共有し、その後n個の整数を表し、n個の要素を表すデータ
出力の説明:
交差する要素シーケンスを出力します.出力フォーマットは例を示します.
交差が空の場合は「head->tail」を出力します.
交差する要素の順序は、シーケンスAの順序に従います.
例:
シーケンス:
A:5 3 2 7
B:1 3 5 8
交点は5と3であり,シーケンスAでは5が3の前にあるため,交点では5も3の前にある.
入力例:4 5 3 2 7
出力例:head->5->3->tail
先頭ノードを使用した単一チェーンテーブルのプログラミング:
2つのシーケンスがあり、それぞれ2つのセットを表します.
それらの交差を求めて出力します.
説明を入力:
1行目は、シーケンスAの情報を入力する.
1番目の整数n(0<=n<=100)は、n個の要素を共有し、その後n個の整数を表し、n個の要素を表すデータ
第1行は、シーケンスBの情報を入力する.
1番目の整数n(0<=n<=100)は、n個の要素を共有し、その後n個の整数を表し、n個の要素を表すデータ
出力の説明:
交差する要素シーケンスを出力します.出力フォーマットは例を示します.
交差が空の場合は「head->tail」を出力します.
交差する要素の順序は、シーケンスAの順序に従います.
例:
シーケンス:
A:5 3 2 7
B:1 3 5 8
交点は5と3であり,シーケンスAでは5が3の前にあるため,交点では5も3の前にある.
入力例:4 5 3 2 7
出力例:head->5->3->tail
#include
using namespace std;
struct ListNode
{
int data;
struct ListNode *next;
};
ListNode *create(int arr[],int num)
{
ListNode *head,*p,*r;
head=new ListNode;
head->next=NULL;
r=head;
for(int i=0;i<num;i++){
p=new ListNode;
p->data=arr[i];
r->next=p;
r=p;
}
r->next=NULL;
return head;
}
int main()
{
int n1,n2;
cin>>n1;
int arr1[100];
for(int i=0;i<n1;i++)
cin>>arr1[i];
cin>>n2;
int arr2[100];
for(int i=0;i<n2;i++)
cin>>arr2[i];
ListNode *A=create(arr1,n1);
ListNode *B=create(arr2,n2);
ListNode *pa=A->next;
ListNode *pb=B->next;
cout<<"head-->";
while(pa){
while(pb){
if(pa->data==pb->data)
{
cout<<pa->data<<"-->";
break;
}
pb=pb->next;
}
pa=pa->next;
pb=B->next;
}
cout<<"tail
";
return 0;
}