我尝试按升序将包含字符串的节点插入到链表中。如果第一个元素的首字母高于其他字符串的首字母,则它可以工作。例如,
“Zeynep相识”
“锡兰”
“德米尔”
这种方式很好。 但是,如果第一个字符串的首字母小于列表中任何字符串的初始值,则它不会打印任何内容。
“阿里”
“Zeynep相识”
“锡兰”
这会腐败。 我跟踪了代码,但无法找到。
struct friendNode
{
char firstName[30];
char lastName[30];
char gender[1];
char birthYear[10];
struct friendNode *next;
};
struct friendRecord
{
struct friendNode *head;
struct friendNode *tail;
int size;
};
void insertFriend(struct friendNode *node, struct friendRecord *list)
{
struct friendNode *temp_node;
temp_node = list->head;
if(temp_node->next == NULL)
{
temp_node->next = node;
list->tail = node;
}
else
{
while(strcmp(node->firstName, temp_node->next->firstName) >= 0 )
temp_node = temp_node->next;
if(temp_node->next == NULL)
{
temp_node->next = node;
list->tail = node;
return;
}
node->next = temp_node->next;
temp_node->next = node;
}
}
答案 0 :(得分:1)
插入链表非常基本。这是一种方法:
void insertFriend(struct friendNode *node, struct friendRecord *list)
{
struct friendNode *pre = NULL;
struct friendNode *post = list->head;
while (post && strcmp(node->firstName, post->firstName) >= 0)
{
pre = post;
post = post->next;
}
if (pre == NULL)
{
list->head = node;
}
else
{
pre->next = node;
}
node->next = post;
if (post == NULL)
{
list->tail = node;
}
}
答案 1 :(得分:0)
myList = List("A", "C", "G")
for {
i <- myList
j <- myList
k <- myList
} yield List(i,j,k)
如果要将节点作为第一个元素,那么您忘记编写代码以将节点附加到列表的头部。我没试过,因为我没有完整的代码。试用。如果仍然无效,我请求发表评论。