免费建网站平台哪个好,网站推广官方平台,外贸网站定制开发,文档管理软件//多重列表的实现
#includestdio.h
#includestdlib.h
struct lnode
{int row,col,value;
};
//没有用到down指针
//没有用到tag和next指针
typedef struct node
{int tag;//区分头结点(0)和非零元素结点(1)struct node* right;struct node* down;//共用体与结…//多重列表的实现
#includestdio.h
#includestdlib.h
struct lnode
{int row,col,value;
};
//没有用到down指针
//没有用到tag和next指针
typedef struct node
{int tag;//区分头结点(0)和非零元素结点(1)struct node* right;struct node* down;//共用体与结构体的区别在于修改一个成员会影响其他所有成员同一时刻只能保存一个成员的值 union{struct node *next;//头结点 struct lnode k;//非零元素结点 }con;
}node;
typedef node* dlist;
typedef struct dlist2
{dlist z[105];
}dlist2;
//用llist指针找到多个空的头节点
typedef dlist2* llist;
int js10,js[105];//找到链表中每个头节点链接的第一个节点
llist empty()
{int a,b,c;printf(请输入矩阵行数);scanf(%d,a);printf(请输入矩阵列数);scanf(%d,b);printf(请输入总元素);scanf(%d,c);llist headnode;dlist p_now[105],p_next[105];int i,j;int x;//分配内存 headnode(llist)malloc(sizeof(dlist2));for(i1;i100;i) headnode-z[i](dlist)malloc(sizeof(node));for(i1;ia;i){js10;for(j1;jb;j){scanf(%d,x);if(x!0){js1;js[j];//储存输入的结点 p_next[i](dlist)malloc(sizeof(node));p_next[i]-con.k.rowi;p_next[i]-con.k.colj;p_next[i]-con.k.valuex;p_next[i]-rightNULL;p_next[j](dlist)malloc(sizeof(node));p_next[j]-con.k.rowi;p_next[j]-con.k.colj;p_next[j]-con.k.valuex;p_next[j]-downNULL;//接入链表记得特殊处理直接链接头节点的点 if(js[j]1) {headnode-z[j]-downp_next[j];p_now[j]headnode-z[j];}else p_now[j]-downp_next[j];//第j列向下链接if(js11){headnode-z[i]-rightp_next[i];p_now[i]headnode-z[i];}else p_now[i]-rightp_next[i];//第i行向右链接 //预备处理后续结点 p_now[i]p_next[i];p_now[j]p_next[j];} }}headnode-z[a1]NULL;//为按行输出做准备 return headnode;
}
void print(llist headnode)
{int i;dlist head;for(i1;headnode-z[i]!NULL;i){//找到一行的头节点 headheadnode-z[i];headhead-right;//输出一行的全部元素 while(head!NULL){printf(%d,%d,%d ,head-con.k.col,head-con.k.row,head-con.k.value);headhead-right;}printf(\n);}
}
int main()
{llist na;naempty();printf(输出矩阵:\n);print(na); return 0;
}