Всем привет! Делаю курсовую работу по теме "База Данных" на двусвязном списке.По условию требуется создать функцию которая выводит все товары с одинаковой датой поступления в магазин.Как реализовать эту функцию?
Код программы прилагаю
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <malloc.h>
#define charlenght 100
struct dllist
{
    char jewname[charlenght];
    char stonetype[charlenght];
    float stoneweight;
    int stonecount;
    float weightkarat;
    float cost;
    char arive[charlenght];
    struct dllist *sled;
    struct dllist *pred;
};
struct dllist *head;
void addtolist();
void delinlist(int pos);
void printlist();
void sortList();
void searchInList();
void NameSumm();
void ArrivalDate();
int numb = 0;
void addtolist()
{
    struct dllist *node = (struct dllist *)malloc(sizeof(struct dllist));
    printf("Наименованние ювелирного изделия: ");
    scanf("%s", &node->jewname);
    printf("Тип камня: ");
    scanf("%s", &node->stonetype);
    printf("Дата поступления в магазин: ");
    scanf("%s", &node->arive);
    printf("Вес камня(в граммах): ");
    scanf("%f", &node->stoneweight);
    printf("Кол-во камней на изделии: ");
    scanf("%d", &node->stonecount);
    printf("Вес в карат: ");
    scanf("%f", &node->weightkarat);
    printf("Cтоимость(в гривнах): ");
    scanf("%f", &node->cost);
    numb++;
    if (head == NULL)
    {
        node->sled = node;
        node->pred = node;
        head = node;
    }
    else
    {
        struct dllist *p = head;
        for(int i = numb; i > 1; i--) p = p->sled;
        p->pred->sled = node;
        node->pred = p->pred;
        node->sled = p;
        p->pred = node;
    }
    printf("Позиция добавлена \n\n");
}
void delinlist(int pos)
{
    if (head == NULL)
    {
        printf("Список пуст \n\n");
    }
    if (head == head->sled)
    {
        free(head);
        head = NULL;
    }
    else
    {
        struct dllist *a = head;
        for (int i = pos; i > 1; i--) a = a->sled;
        if (a == head) head = a->sled;
        a->pred->sled = a->sled;
        a->sled->pred = a->pred;
        free(a);
    }
    printf("Позиция удалена\n");
}
void printlist()
{
    if (head==NULL) printf("Список пуст\n");
    else
    {
        struct dllist *a = head;
        printf("Позиции :\n ");
        do
        {
            printf("Название юв. изделия: %s\n", a->jewname);
            printf("Тип камня: %s\n", a->stonetype);
            printf("Дата поступления в магазинн: %s\n", a->arive);
            printf("Вес камня: %f грамм\n", a->stoneweight);
            printf("Кол-во камней: %d\n", a->stonecount);
            printf("Вес в карат: %f\n", a->weightkarat);
            printf("Стоимость: %f гривен\n", a->cost);
            a = a->sled;
        }while(a != head);
    }
}
void sortList()
{
    struct dllist *a = head;
    if(head == NULL)
    {
        printf("Список пуст\n");
    }
    else
    {
        float min,max;
        int i;
        printf("\nВведите ваш диапазон \n");
        printf("Минимальная желаемая цена: ");
        scanf("%f",&min);
        printf("Максимальная желаемая цена: ");
        scanf("%f",&max);
        for (i = 0;i < numb;i++)
        {
            if( a->cost >= min && a->cost <=max  )
            {
                printf("Имя позиции : %s  Цена данной позиции : %f \n",a->jewname,a->cost);
            }
            else
            {
                printf("Предметов с ценной в данном диапазоне не обнаруженно \n");
            }
        }
    }printf("\n\n");
}
void searchInList()
{
    struct dllist *a = head;
    char opt[charlenght];
    if (head == NULL)
    {
        printf("Список пуст\n");
    }
    else
    {
        int i;
        printf("\nВведите ваш критерий поиска: ");
        scanf("%s",&opt);
        printf("По вашему критерию найдены такие позиции: \n");
        for (i = 0;i < numb; i++)
        {
            if(strcmp(a->jewname, opt)|| strcmp(a->stonetype,opt))
            {
                printf("Наименованние ювелирного изделия : %s || Тип камня ювелирного изделия %s \n",a->jewname,a->stonetype);
            }
            else
            {
                printf("Позиций с вашими критериями отсутствуют \n");
            }
        }
    }
}
void NameSumm()
{
       struct dllist *a = head;
       char name[charlenght];
       int summ=0;
       int i;
       if(head == NULL)
       {
           printf("Cписок пуст!\n");
       }
       else
       {
           printf("Введите название ювелирного изделия \n");
           scanf("%s",name);
           for(i = 0;i<numb;i++)
           {
               if(strcmp(a->jewname,name ) == 0)
               {
                   summ+=a->cost;
               }
               else
               {
                   printf("Изделий по данному имени не найдено\n");
               }
           }
            printf("Стоимость всех изделий по введеному имени составляет: %d \n",summ);
       }
}
void ArrivalDate()
{
       int i;
       char date = [charlenght];
       struct dllist *a = head;
       if(head == NULL)
       {
           printf("Список пуст!\n");
       }
       do
       {
           for(i = 0;i<numb;i++)
           {
                date[i]=a->arive;
           }
       }while(a != head);
       printf("\n\n");
}
int main()
{
    system("chcp 1251");
    system("cls");
    int pos, n;
    do
    {
        printf("1. Добавить позицию\n");
        printf("2. Удалить позицию\n");
        printf("3. Вывести список всех позиций\n");
        printf("4. Сортировка цен в заданном диапазоне\n");
        printf("5. Поиск позиций по заданному описаннию\n");
        printf("6. Сумма стоимости изделий по имени\n");
        printf("7. Вывод изделий с одинаковой датой поступления\n");
        printf("0. Завершить\n");
        printf("Введите номер действия --> ");
        scanf("%d", &n);
        switch (n)
            {
                case 1:
                    addtolist();
                    break;
                case 2:
                    printf("Введите порядковый номер данной позиции");
                    scanf("%s",&pos);
                    delinlist(pos);
                    break;
                case 3:
                    printlist();
                    break;
                case 4:
                    sortList();
                    break;
                case 5:
                    searchInList();
                    break;
                case 6:
                    NameSumm();
                    break;
                 case 7:
                    ArrivalDate();
                    break;
            }
        }while(n != 0);
}