C语言结构体中字符串排序,请教多个字符串排序(不用数组)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include 

struct stud{char *pp; int sum;struct stud *next;};

struct stud *creat1(int n)

{ struct stud *head,*newer, *p1,*p2; int t=0,k=0; char *pp1;

printf("输入字符串:");

newer=(struct stud*)malloc(sizeof(struct stud));

newer->pp=(char*)malloc(sizeof(char)*15);

gets(newer->pp);  pp1=newer->pp;

while(*pp1) k+=*pp1++; newer->sum=k;

head=p1=p2=0;

while(t

{ t++;

if(head==0)  { head=newer;newer->next=0;p1=head;}

else   {while(p1->sum>newer->sum&&p1->next!=0)

{p2=p1;p1=p1->next;}

if(p1->sumsum)

if(head==p1)

{newer->next=p1;newer->next=head;head=newer;}

else  {p2->next=newer;newer->next=p1;}

else

{p1->next=newer;newer->next=0;}   p1=head;

newer=(struct stud*)malloc(sizeof(struct stud));

newer->pp=(char*)malloc(sizeof(char)*15);

gets(newer->pp); pp1=newer->pp;k=0;

while(*pp1) k+=*pp1++; newer->sum=k; }

newer->next=0;

}

return(head);

}

void print(struct stud *head)

{ while(head!=0)  {puts(head->pp);printf("\n");head=head->next;} }

main()

{struct stud  *p; int x;

printf("输入字符串的数量:\n");

scanf("%d",&x);

p=creat1(x);printf("降序排列字符串:\n");print(p);

system("PAUSE");

}

请教下各位指点迷津...看到链表这里还是有些晕

排序标准字符串各字符的asc2码值和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言结构体,是可以使用动态字符串数组的。一种实现方法是使用指针和动态内存分配函数(如malloc、calloc等)来创建一个指向字符串的指针数组,然后在需要的时候动态地分配内存来存储字符串。下面是一个示例代码: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LEN 50 typedef struct { char **names; int num_names; } Person; void add_name(Person *p, char *name) { p->num_names++; p->names = realloc(p->names, sizeof(char *) * p->num_names); p->names[p->num_names - 1] = malloc(sizeof(char) * (strlen(name) + 1)); strcpy(p->names[p->num_names - 1], name); } int main() { Person p; p.names = NULL; p.num_names = 0; add_name(&p, "John"); add_name(&p, "Mary"); add_name(&p, "Tom"); for (int i = 0; i < p.num_names; i++) { printf("Name %d: %s\n", i + 1, p.names[i]); } for (int i = 0; i < p.num_names; i++) { free(p.names[i]); } free(p.names); return 0; } ``` 在上面的代码,我们定义了一个名为Person的结构体,其包含一个char类型的指针指向字符串数组,以及一个int类型的变量表示数组字符串的数量。我们定义了一个add_name函数,用于向字符串数组添加新的字符串。这个函数首先将num_names加1,然后使用realloc函数重新分配names指针数组的内存空间,以便能够存储更多的指向字符串的指针。接下来,它使用malloc函数为新字符串分配内存,并使用strcpy函数将字符串复制到新分配的内存。在主函数,我们使用add_name函数向Person结构体添加了三个字符串,然后使用for循环打印出每个字符串。最后,我们使用for循环和free函数释放了动态分配的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值