对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到。例如china,长度为5,可以构成china,hinac,inach,nachi,achin。按照首字符从小到大排序,如果相同,则按照它们在S中的位置从小到大排序。排序后的尾字符组成了一个新的字符串S’,它的长度也是n,并且包含了S中的每一个字符。最后输出S’以及S的首字符在S’中的位置p。输入:输入文件file_in.txt,包含两行,第1行是一个整数n(1 <=n<=10000),代表S的长度,第2行是字符串S。输出:输出文件file_out.txt,第1行字符串S’,第2行整数p。
#define _CRT_SECURE_NO_WARNINGS 1 // scanf函数不安全
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_N 1000
typedef struct {
char* s;
int index;
}String;
int compare_string(const void* a, const void* b) {
const String* s1 = (const String*)a;
const String* s2 = (const String*)b;
if (s1->s[0] == s2->s[0])
return s1->index - s2->index;
return s1->s[0] - s2->s[0];
}
void main() {
int n, i;
char s[MAX_N + 1];
String* strings;
FILE* fin = fopen("file_in.txt", "r");
fsc