c-如何在链表中颠倒句子中的单词



示例:"这是一个例子"应改为"例子就是这个"应将一个字符存储为每个节点的信息。完成此操作后,我可以反转整个句子(即->"elpmaxe na si sihT")。现在我如何反转每个单词以获得:"example an is This"

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node {
    struct node *ptr;
    char info;
};
struct node *first,*ic;
struct node * insertn(int n,struct node * first)
{
    struct node *temp,*cur;
    temp=(struct node *)malloc(sizeof(struct node));
    temp->info=n;
    temp->ptr='';
    if(first=='')
    {
        return temp;
    }
    else{
        cur=first;
        while(cur->ptr!='')
        cur=cur->ptr;
        cur->ptr=temp;
        return first;
    }
}
void disp( struct node *first)
{
    printf("here");
    struct node *cur;
    cur=first;
    while(cur!='')
    {
        printf("%c",cur->info);
        cur=cur->ptr;
    }
}
void rev(struct node * p)
{
    if(p->ptr=='')
    {
        first =p;
        return;
     }
     rev(p->ptr);
     struct node *q=p->ptr;
     q->ptr=p;
     p->ptr='';
 }
main()
{   
    char n;
    int i=0;
    first='';
    ic='';
    while(i<7)
    {
        i++;
        printf("Enter element:");
        scanf("%c",&n);
        first=insertn(n,first);
    }
    printf("ELEMENTS OF LIST BEFORE REV:");
    disp(first);
    rev(first);
    printf("nnELEMENTS OF LIST AFTER REV:");
    disp(first);
}

读取每个单词,并将其作为char数组添加到节点中。然后从头到尾阅读你的链接列表。你会得到相反的句子。

-------------------------------
+ *prev + "This" + *next +
-------------------------------
------------------------
+ *prev + "is" + *next +
------------------------
------------------------
+ *prev + "an" + *next +
------------------------
-----------------------------
+ *prev + "example" + *next +
-----------------------------

现在使用*prev从头开始阅读。

更好的方法是将一个单词存储为每个节点的信息。像这样:

#define LEN 10
struct node{
    struct node *ptr;
    char info[LEN+1]; // the length of each word cannot be more than LEN
};

struct node{
    struct node *ptr;
    char *info;
};

然后,您可以使用rev函数来实现您的目标。

如果你不想改变节点的结构,你应该把句子按空格分成单词。你可以先把每个单词倒过来,然后把整个句子倒过来。

像这样:"This is an example"->"sihT si na elpmaxe"->"example an is This"

相关内容

  • 没有找到相关文章

最新更新