C 按字母顺序排列链表
我试图按字母顺序对单链表进行排序,我想我已经记下了这个概念,但是我得到了一个编译错误,它说:C 按字母顺序排列链表,c,C,我试图按字母顺序对单链表进行排序,我想我已经记下了这个概念,但是我得到了一个编译错误,它说: function.c: error: assignment to expression with array type newNode->text = newNode->next->text; 它对行node->next->text=temp也有同样的说明进入链表每个节点的数据取自输入,假设此场景有5个节点。我的代码如下: // the struct used for represe
function.c: error: assignment to expression with array type newNode->text = newNode->next->text;
它对行node->next->text=temp也有同样的说明
进入链表每个节点的数据取自输入,假设此场景有5个节点。我的代码如下:
// the struct used for representing a linked-list node
typedef struct writeText{
char text[100];
struct writeText *next;
}write;
void sorting(write ** front, write ** rear) {
char *temp;
write *newNode;
newNode = *front;
if(newNode) {
while(newNode && newNode->next) {
if(strcmp(newNode->text, newNode->next->text) > 0) {
temp = newNode->text;
newNode->text = newNode->next->text;
newNode->next->text = temp;
}
newNode= newNode->next;
}
}
}
那么,如何按字母顺序对链接列表排序呢?谢谢您不能通过分配复制数组。对于字符串,请使用
strcpy
或strncpy
。对于其他阵列,请使用memcpy
或memmove
更改:
temp = newNode->text;
newNode->text = newNode->next->text;
newNode->next->text = temp;
到
writeText::text
不是指针。这是一个数组。您需要手动将数据从一个char
数组复制到另一个数组中。我假定其目的不是声明结构writeText
的实例write
,而实际代码缺少您在struct
之前选择忽略的typedef
。仅出于这个原因,这将无法编译,更不用说以后尝试通过值直接分配数组了。啊,是的,我在传输代码时没有注意到这一点,我的代码中确实有它,尽管下面的“node->next->user=temp”行中出现了另一个错误,即“error:assignment to expression with array type”,我该如何解决这个问题?@Leona12我更新了答案
strcpy(temp, newNode->next);
strcpy(newNode->text, newNode->next->text);
strcpy(newNode->next->text, temp);