【发布时间】:2014-01-15 08:28:43
【问题描述】:
我正在尝试编写一个代码来检查 2 个单词是否是字谜,使用链表。为此,我想它应该从用户那里接收 2 个单词并将它们包含的每个字母传递给链表的节点,并比较节点是否具有相同的字母,如果是,则从第二个单词中删除相同的字母。当该过程完成时,如果第二个列表为空,则它们是字谜。即使1个字母不匹配,它应该返回0,但我不知道如何确定这些单词的长度,这是我到目前为止写的内容
#include <stdio.h>
#include <stdlib.h>
struct node
{
struct node *prev;
struct node *next;
char data;
};
typedef struct node *NODE,NOD;
NODE last(NODE list)
{
if(list!=NULL)
while(list->next!=NULL)
list=list->next;
NODE lst;
lst=list;
return lst;
}
void insert( char letter, NODE list)
{
NODE nod;
nod=(NODE)malloc(sizeof(NOD));
nod->next=NULL;
nod->prev=NULL;
nod->data=letter;
if(list==NULL)
{
list=nod;
}
else
{
nod->prev=last(list);
last(list)->next=nod;
}
}
【问题讨论】:
-
伪代码:
bool isAnagram(word1, word2){return sort(word1) == sort(word2);}
标签: c linked-list anagram