十字链表的建立,但出错了,不知道错哪,帮忙看看。
在建表的地方就出错了,但看不出是哪 知道是在第一个函数里面出错#include<stdio.h>
#include<stdlib.h>
typedef struct shizi
{
int i,j,e;
struct shizi *right;
struct shizi *down;
}shizi,*sz;
typedef struct xinxi
{
sz *rhead;
sz *dhead;
int mu,nu,tu;
}xinxi;
void inser(sz A,xinxi &L)
{
int i,j;
sz p,q;
p=A;
i=A->i;j=A->j;
if(L.rhead[i]==NULL||L.rhead[i]->j>j)
{
p->right=L.rhead[i];printf("sasas");
L.rhead[i]=p;
}
else
{
for( q=L.rhead[i];(j>q->right->j)&&(q->right);q=q->right);
p->right=q->right;printf("ssddddd");
q->right=p;
}
if(L.dhead[j]==NULL||L.dhead[j]->i>i)
{
p->down=L.dhead[j];
L.dhead[j]=p;
}
else
{
for( q=L.dhead[j];(i>q->down->i)&&(q->down);q=q->down);
p->down=q->down;
q->down=p;
}
}
void creat(xinxi &L)
{
int i,j,e=1,n; sz p;
printf("输入行数,列数:\n");
scanf("%d",&i);L.mu=i;
scanf("%d",&j);L.nu=j;
L.tu=0;
L.rhead=(sz *)malloc((i+1)*sizeof(sz));
for(n=0;n<=i;n++,L.rhead[n]=NULL);
L.dhead=(sz *)malloc((j+1)*sizeof(sz));
for(n=0;n<=j;n++,L.dhead[n]=NULL);
while(true)
{
printf("输入值,行下标,列下标并以0结束:\n");
scanf("%d",&e);
if(e==0) break;
scanf("%d",&i);
scanf("%d",&j);
p=(sz)malloc(sizeof(shizi));
p->e=e;p->i=i;p->j=j;
inser(p,L);
}
}
int main(void)
{
xinxi LA;xinxi LB;
printf("第一个十字链表\n");
creat(LA);
printf("第二个十字链表\n");
creat(LB);
return 0;
}