题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

#include <stdio.h>
#include <string.h>

struct node {
    char value[100];
    struct node* next;
};

int main() {
    int n;
    struct node* header = (struct node*) calloc(sizeof(struct node), 1);

    char value[100];
    scanf("%d", &n);

    for (int i = 0 ; i < n; i++) {
        scanf("%s", value);
        if (header->next == NULL) {
            struct node* indexNode = (struct node*) calloc(sizeof(struct node), 1);
            header->next = indexNode;
            strcpy(indexNode->value, value);
        } else {
            struct node* p = header;
            while (p != NULL) {
                if (p->next == NULL) {
                    struct node* new = (struct node*) calloc(sizeof(struct node), 1);
                    new->next = p->next;
                    p->next = new;
                    strcpy(new->value, value);
                    break;
                } else if (strcmp(p->next->value, value) >= 0) {

                    struct node* new = (struct node*) calloc(sizeof(struct node), 1);
                    new->next = p->next;
                    p->next = new;
                    strcpy(new->value, value);

                    break;
                } else   {
                    p = p->next;
                }

            }
        }
    }

    struct node* p = header;
    while (p->next != NULL) {
        printf("%s\n", p->next->value);
        p = p->next;
    }

    return 0;
}

这题的思路我的做法跟之前哪个合并索引算法是一样的,没想到有什么其他更好的办法

全部评论

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务