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);