Кольцевой список
#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);
}
}
У меня есть кольцевой список и функция сравнения рядкив. Но как мне совместить это все и занести в стек?