📄 construct_matrix.cpp
字号:
#include "LDPC_head.h"
#include <stdlib.h>
node *space(struct matrix_bit *matrix)
{
node *head;
node *p1;
node *p2;
unsigned int i;
unsigned int j;
// unsigned int k;
head=(struct node *)malloc (sizeof(struct node));
head->row=-1;
head->col=-1;
head->left=NULL;
head->right=NULL;
head->up=NULL;
head->down=NULL;
head->Q=0;
head->R=0;
//分配行骨架节点
head->right=(struct node *)malloc ((sizeof(struct node))*matrix->N);
for(i=0;i<matrix->N;i++)
{
p1=head->right+i;
p1->row=-1;
p1->col=i;
p1->up=NULL;
p1->down=NULL;
p1->Q=0;
p1->R=0;
if(i==0)
{
p1->left=head;
}
else
{
p1->left=p1-1;
}
if(i==matrix->N-1)
{
p1->right=head;
}
else
{
p1->right=p1+1;
}
}
head->left=head->right+matrix->N-1;
//分配列骨架节点
head->down=(struct node *)malloc ((sizeof(struct node))*matrix->M);
for(i=0;i<matrix->M;i++)
{
p1=head->down+i;
p1->row=i;
p1->col=-1;
p1->left=NULL;
p1->right=NULL;
p1->Q=0;
p1->R=0;
if(i==0)
{
p1->up=head;
}
else
{
p1->up=p1-1;
}
if(i==matrix->M-1)
{
p1->down=head;
}
else
{
p1->down=p1+1;
}
}
head->up=head->down+matrix->M-1;
//构造体节点
for(i=0;i<matrix->M;i++)
{
for(j=0;j<matrix->H_mrw;j++)
{
if(matrix->H[i*matrix->H_mrw+j]!=0)
{
p1=(struct node *)malloc (sizeof(struct node));
p1->row=i;
p1->col=matrix->H[i*matrix->H_mrw+j]-1;
p1->R=0;
p1->Q=0;
p2=head->right+matrix->H[i*matrix->H_mrw+j]-1;
while(p2->down!=NULL)
{
p2=p2->down;
}
p2->down=p1;
p1->up=p2;
p1->down=NULL;
p2=head->down+i;
while(p2->right!=NULL)
{
p2=p2->right;
}
p2->right=p1;
p1->left=p2;
p1->right=NULL;
}
}
}
p1=head->right;
for(i=0;i<matrix->N;i++)
{
p2=p1->down;
while(p2->down!=NULL)
{
p2=p2->down;
}
p2->down=p1;
p1->up=p2;
p1++;
}
p1=head->down;
for(i=0;i<matrix->M;i++)
{
p2=p1->right;
while(p2->right!=NULL)
{
p2=p2->right;
}
p2->right=p1;
p1->left=p2;
p1++;
}
return (head);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -