Кольцевой список

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct inf {
    char mes[50];
    struct inf* next;
}INF;

INF* init() {
    INF* lst;
    lst = (INF*)malloc(sizeof(INF));
    gets_s(lst->mes);
    lst->next = lst;
    return lst;
}
void FreeList(INF* lst)
{
       INF* pel = lst;
       while (pel != lst) {
           lst = lst->next; // першим в списку стає наступний елемент
           free(pel); // видалення поточного елемента
           pel = lst;
       }
}
INF* addelem(INF* lst) {
    INF* temp, * p;
    temp = (INF*)malloc(sizeof(INF));
    p = lst->next;
    lst->next = temp;
    gets_s(temp->mes);
    temp->next = p;
    return temp;
}

void listprint(INF* lst)
{
   INF* p;
   p = lst;
   do {
       printf("%s ", p->mes);
       p = p->next;
   } while (p != lst);
}
int main() {
    INF* p;
    p = init();
    for (int i = 0; i < 3; i++)
    {
        p=addelem(p);
    }
    listprint(p);
    FreeList(p);
}

С введенных слов сформировать кольцевой односвязный список. затем создать новый список, организованный как стек, в который переписать все слова, состоят из тех же букв, что и первое введенное слово. Напечатать сокращенный базовый список и вновь список или вывести сообщение о отсутствие искомых слов. Использовать функцию, которая проверяет, два заданные символьные строки состоят из одинаковых символов.

void m() {
    char m[] = "ertyu", * p;
    char n[] = "wsfrgetyr", * p1;
    p = m;
    p1 = n;
    int c=0;
    int t = strlen(m);
    char *y;
    for (; *p != '\0'; p++) {
        for (; *p1!= '\0'; p1++)
        {
            if (*p == *p1) {
                c++;
            }
        }
        p1 = n;
    }
    if (c == t) {
        puts(p1);
    }
}

У меня есть кольцевой список и функция сравнения рядкив. Но как мне совместить это все и занести в стек?


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