Выдает ошибку при сравнении в функции intersec

#include<stdio.h> 
#include<stdlib.h> 
#include<iostream>
using namespace std;
struct list
{
    int field; // поле данных
    list* next; // указатель на следующий элемент
    list* prev; // указатель на предыдущий элемент
};
void pre(list* lst)
{
    struct list* p;
    p = lst;
    do {
        p = p->prev;  // переход к предыдущему узлу
        printf("%d ", p->field); // вывод значения элемента p
    } while (p != lst); // условие окончания обхода
}
list* init(int a)//инициализация
{
    struct list* lst;
    lst = (struct list*)malloc(sizeof(struct list));
    lst->field = a;
    lst->next = lst; // указатель на следующий узел
    lst->prev = lst; // указатель на предыдущий узел
    return(lst);
}
list* push(list* lst, int number)
{
    struct list* temp, * p;
    temp = (struct list*)malloc(sizeof(list));
    p = lst->next; // сохранение указателя на следующий узел
    lst->next = temp; // предыдущий узел указывает на создаваемый
    temp->field = number; // сохранение поля данных добавляемого узла
    temp->next = p; // созданный узел указывает на следующий узел
    temp->prev = lst; // созданный узел указывает на предыдущий узел
    p->prev = temp;
    return(temp);
}
list* pop(list* lst)
{
    struct list* prev, * next;
    prev = lst->prev; // узел, предшествующий lst
    next = lst->next; // узел, следующий за lst
    prev->next = lst->next; // переставляем указатель
    next->prev = lst->prev; // переставляем указатель
    free(lst); // освобождаем память удаляемого элемента
    return(prev);
}
list* intersec(list* ken,list* ny, int a, int b)//принимает указатели на корни
//двух списков для пересечения
{
    int n = 0;
    for(int i=0;i<a;i++)
    {
        ken = ken->prev;
        for(int i1=0;i<b;i++)
        {
            ny = ny->prev;
```
    if ((ken->field) == (ny->field))
```
            {
                n = 1;
                pop(ny);
                break;
            } 
        } 
    }
    return 0;
}
int main()
{
    list* a = NULL;
    list* b = NULL;
    int k,d,k1;
    cout <<"Enter the elems number in first list:"<<endl;
    cin >> k;
    cout << "Enter elems:" << endl;
    cin >> d;
    a=init(d);
    for (int i = 0; i < k-1; i++)
    {
        cin >> d;
        push(a, d);
    }
    cout << "Enter the elems number in second list:" << endl;
    cin >> k1;
    cout << "Enter elems:" << endl;
    cin >> d;
    b=init(d);
    for (int i = 0; i < k1-1; i++)
    {
        cin >> d;
        push(b, d);
    }
    cout << "First list: "<<endl;
    pre(a);
    cout << endl;
    cout << "Second list: " << endl;
    pre(b);
    intersec(a, b,k,k1);
    cout << endl;
    cout << "List's intersection: " << endl;
    pre(a);
    return 0;
}

Ответы (0 шт):