使用链表在C中堆叠

时间:2019-03-04 20:42:38

标签: c

大家好,我想要一个程序,该程序允许我放置一个原始句子和第二个句子,然后检查是否有可能使用C语言的Stacks(链接列表)从第一个句子构造最后一个句子,最好使用动态分配。 例如:“我吃了一个苹果” “苹果吃了我:是的” “我吃了一个苹果:不” 这是我被封锁的地方

`

#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 :(得分:0)

即使您的代码不完整,也可以做几句话:

  • 使用 fgets 而不是 gets gets 并不安全,因此很长一段时间以来已被弃用
  • 您的函数 nbrltr 已经存在: strlen
  • 您需要在两个 malloc 上再分配一个,才能保存以null结尾的字符
  • 根据定义sizeof(char)为1,将其乘以没有用

您需要从两个字符串中提取单词,以查看 strtok

有两个列表,每个列表包含一个句子中的单词,您可以通过多种方法检查它们是否包含相同的单词。警告不要忘记单词多次出现的情况。