#include <iostream.h>
#include <conio.h>
struct point
{
int key;
point *next;
};
point *make_point()
{
point *p = new (point);
cin >> p -> key;
p -> next = 0;
return p;
}
point *make_list1(int n)
{
point *beg = make_point();
point *r;
for ( int i=1; i<n; i++)
{
r = make_point();
r -> next = beg;
beg = r;
}
return beg;
}
void print_list (point *beg)
{
point *p=beg;
if (!p)
{
cout << " Spisok pust";
return;
}
while (p != 0)
{
cout << p -> key<< " ";
p = p -> next;
}
}
int main ()
{
clrscr();
int n, m, kol;
point *l1,*l2, *l;
cout << "Vvedite kol-vo elementov spiska #1 :";
cin >> n;
cout << "\nZapolnite spisok #1\n" << endl;
l1 = make_list1(n);
cout << "\nSpisok #1\n" << endl;
print_list(l1);
cout << "\n\nKol-vo elementov spiska #2 :";
cin >> m;
cout << "\nZapolnite spisok #2\n";
l2 = make_list1(m);
cout << "\nSpisok #2\n" << endl;
print_list(l2);
//тут начинаю искать подпоследвательность
while (l1 != NULL)
{
while(l2 != NULL)
{
if (l1==l2)
{
l=l1;
}
else if (l1 < l2)
{
l1=l1->next;
}
else if (l1 > l2)
{
l2=l2->next;
}
}
}
if (l != NULL)
print_list(l);
else
cout << "\nU spiskov net obschih elementov.\n";
getch();
return 0;
}
тут у меня процедура для формирования списка make_list, вот её-то и нужно использовать, но я не знаю как правильно, т.к. я не знаю точного количества элементов одинаковых.
Сообщение отредактировано: Nike0 -