为指针数组分配动态内存空间问题。。。
想为一个链表排序,但不改变原来链表的顺序,所以想用动态分配指针数组的内存空间来实现原理是:将链表的每个节点的首地址存入一个指针数组里面,再通过指针数组里面的节点地址所指向链表的学号通过“冒泡”法排序,只改变节点首地址在指针数组里面的顺序,然后输出指针数组的节点数据,但是我实现的时候遇到问题,编译不能通过,希望能帮一下我。
程序代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> typedef struct Data //将学生用户信息和成绩信息相结合,构成数据链表 { char num[15]; //学号 char name[15]; //姓名 char sex[5]; char password[20]; float score[8]; //依次为:C程,程序导引,语文,英语,高数,线代,思修,平均分 struct Data *next; //指向下一个链表的指针 }DATA; //PS:DATA只是替代struct Data名词,并不是一个结构体,一个学生一个节点 DATA *head=NULL; void sort_num() { DATA *pt=head->next; int count=0,i=0; while(pt) { count++; //计算链表节点的个数 pt=pt->next; } DATA *p; p=(DATA *)calloc(count,sizeof(DATA *));//动态分配指针数组所需的空间 pt=head->next; while(pt) //将各个节点的首地址复制给指针数组 { p[i]=pt; pt=pt->next; } DATA *t; for(i=0;i<count;i++) //通过冒泡法排序 for(int j=i;j<count;j++) if(strcmp(p[i]->num,p[j]->num)>0) { t=p[i]; p[i]=p[j]; p[j]=t; } }。