Стек в C, используя связанный список - PullRequest
0 голосов
/ 04 марта 2019

Привет, ребята. Мне нужна программа, которая позволяет мне поместить оригинальное предложение и второе, а затем проверить, возможно ли построить последнее предложение из первого, используя Stacks (связанные списки) на языке C, предпочтительно используя динамическое распределение.,Например: «Я ел яблоко», «Я ел яблоко, я: ДА», «Я ел яблоко: НЕТ», вот где меня заблокировали

`

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct element
   {
       char* word;
       struct element* next;
   }elm;
typedef struct linkedlist
{
    elm* first;
}list;
int nbrltr(char* k)
{
    int i=0;
    while(k[i]!='\0')
        i++;
    return i;
}

int main()
{  char *p1,*q,*p2;
   q=malloc(20*sizeof(char));
   printf("put the original sentence :\n");
   gets(q);
   p1=malloc(nbrltr(q)*sizeof(char));
   strcpy(p1,q);
   printf("put the wanted sentence :\n");
   gets(q);
   p2=malloc(sizeof(char)*nbrltr(q));
   strcpy(p2,q);
   free(q);
   return 0;
}

1 Ответ

0 голосов
/ 05 марта 2019

Даже если ваш код не завершен, несколько замечаний уже можно сделать:

  • использовать fgets вместо получает , получает из-за этого
  • ваша функция nbrltr уже существует: strlen .
  • вам нужно выделить еще однуна обоих malloc для сохранения нулевого конечного символа
  • По определению sizeof(char) равно 1, умножать на него бесполезно

Youвам нужно будет извлечь слова из ваших двух строк, для этого взгляните на strtok .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...