为指针数组分配动态内存空间问题。。。
想为一个链表排序,但不改变原来链表的顺序,所以想用动态分配指针数组的内存空间来实现原理是:将链表的每个节点的首地址存入一个指针数组里面,再通过指针数组里面的节点地址所指向链表的学号通过“冒泡”法排序,只改变节点首地址在指针数组里面的顺序,然后输出指针数组的节点数据,但是我实现的时候遇到问题,编译不能通过,希望能帮一下我。
程序代码:#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;
}
}。





