内存:128  时间:1

题目描述

(线性表)两个整数序列A=a1,a2,a3,…,amB=b1,b2,b3,…,bn已经存入两个单链表中,设计一个算法,判断序列B是否是序列A的子序列,是则输出1,否则输出0。

输入

输入A的长度m:6

输入A:1 2 3 4 5 6

输入B的长度n:4

输入B:1 2 3 4

输出

1

样例输入

5
7 8 9 12 10
4
7 9 56 10

样例输出

0

提示

代码如下

#include <iostream>
using namespace std;
struct node
{
	int data;
	node *next;
};
node *create(int n)
{
	int i;
	node *head,*prev,*curr;
	head=NULL;
	for(i=0;i<n;i++)
	{
		curr=new node;
		cin>>curr->data;
		if(i==0)
			head=curr;
		else
			prev->next=curr;
		prev=curr;
	}
	prev->next=NULL;
	return head;
}
void func(node *head1,node *head2,int n,int m)
{
	node *p1,*p2;
	int i,j,count=0;
	p2=head2;
	for(i=0;i<m;i++)
	{
		p1=head1;
		for(j=0;j<n;j++)
		{
			if(p2->data==p1->data)
			{
				count++;
			}
			if(j!=5)
				p1=p1->next;
		}
		if(i!=3)
			p2=p2->next;
	}
	if(count==m)
		cout<<1;
	else
		cout<<0;
}
int main()
{
	int n,m;
	node *head1,*head2;
	cin>>n;
	head1=create(n);
	cin>>m;
	head2=create(m);
	func(head1,head2,n,m);
	return 0;
}

代码来源于互联网,仅供参考!