求助,请高人帮忙调试,对三角矩阵的压缩转置算法
把一对三角矩阵用一位数组压缩,在进行转置的算法,下面是我写的程序,调试也没有语句上的错误了,但不能运行,求高人相助,先谢过大家了!!!!
#include<stdio.h>
#include<stdlib.h>
#define max 20
#define zero 0
typedef struct{
int i,j,v;
}node;
typedef struct{
node data[max];
int m;
}TSmatrix;
TSmatrix *Setmatrix(){ //建三对角矩阵
TSmatrix *T;
T=(TSmatrix *)malloc(sizeof(TSmatrix));
printf("请输入矩阵行数或列数:");
scanf("%d",&T->m);
printf("建立三对角矩阵:\n");
printf("输入第一行的两个数:\n");
scanf("%d %d",&T->data[0].v,&T->data[1].v);
T->data[0].i=0;
T->data[0].j=0;
T->data[1].i=0;
T->data[1].j=1;
printf("输入第二行至第%d行的数(每行3个):\n",T->m-1);
int t=2;
for(int p=1;p<T->m-1;p++)
for(int q=p-1;q<p+2;q++)
{
T->data[t].i=p;
T->data[t].j=q;
scanf("%d",&T->data[t].v);
t++;
}
printf("输入最后一行的两个数:\n");
scanf("%d %d",&T->data[T->m-2].v,&T->data[T->m-1].v);
T->data[T->m-2].i=T->m-1;
T->data[T->m-2].j=T->m-2;
T->data[T->m-1].i=T->m-1;
T->data[T->m-1].j=T->m-1;
return T;
}
TSmatrix *Trabsmatrix(TSmatrix *T){ //三对角矩阵转置
int n,temp;
TSmatrix *F;
F=(TSmatrix *)malloc(sizeof(TSmatrix));
F->m=T->m;
for(n=0;n<3*T->m-2;n++){ //将结点信息存入新三元组表中
temp=2*T->data[n].j+T->data[n].i; //计算待存入三元数组下标
F->data[temp].i=T->data[n].j;
F->data[temp].j=T->data[n].i;
F->data[temp].v=T->data[n].v;
}
return F;
}
void TSmatrixout(TSmatrix *T){ //三对角矩阵输出
int a,b,n;
n=0;
for(a=0;a<T->m;a++){
for(b=0;b<T->m;b++){
if(T->data[n].i==a&&T->data[n].j==b){
printf("%d ",T->data[n].v);
n++;
}
else
printf("%d ",zero);
}
printf("\n");
}
}
void main(){
TSmatrix *T;
T=Setmatrix();
printf("三对角矩阵:\n");
TSmatrixout(T);
T=Trabsmatrix(T);
printf("转置后三对角矩阵:\n");
TSmatrixout(T);
}
#include<stdio.h>
#include<stdlib.h>
#define max 20
#define zero 0
typedef struct{
int i,j,v;
}node;
typedef struct{
node data[max];
int m;
}TSmatrix;
TSmatrix *Setmatrix(){ //建三对角矩阵
TSmatrix *T;
T=(TSmatrix *)malloc(sizeof(TSmatrix));
printf("请输入矩阵行数或列数:");
scanf("%d",&T->m);
printf("建立三对角矩阵:\n");
printf("输入第一行的两个数:\n");
scanf("%d %d",&T->data[0].v,&T->data[1].v);
T->data[0].i=0;
T->data[0].j=0;
T->data[1].i=0;
T->data[1].j=1;
printf("输入第二行至第%d行的数(每行3个):\n",T->m-1);
int t=2;
for(int p=1;p<T->m-1;p++)
for(int q=p-1;q<p+2;q++)
{
T->data[t].i=p;
T->data[t].j=q;
scanf("%d",&T->data[t].v);
t++;
}
printf("输入最后一行的两个数:\n");
scanf("%d %d",&T->data[T->m-2].v,&T->data[T->m-1].v);
T->data[T->m-2].i=T->m-1;
T->data[T->m-2].j=T->m-2;
T->data[T->m-1].i=T->m-1;
T->data[T->m-1].j=T->m-1;
return T;
}
TSmatrix *Trabsmatrix(TSmatrix *T){ //三对角矩阵转置
int n,temp;
TSmatrix *F;
F=(TSmatrix *)malloc(sizeof(TSmatrix));
F->m=T->m;
for(n=0;n<3*T->m-2;n++){ //将结点信息存入新三元组表中
temp=2*T->data[n].j+T->data[n].i; //计算待存入三元数组下标
F->data[temp].i=T->data[n].j;
F->data[temp].j=T->data[n].i;
F->data[temp].v=T->data[n].v;
}
return F;
}
void TSmatrixout(TSmatrix *T){ //三对角矩阵输出
int a,b,n;
n=0;
for(a=0;a<T->m;a++){
for(b=0;b<T->m;b++){
if(T->data[n].i==a&&T->data[n].j==b){
printf("%d ",T->data[n].v);
n++;
}
else
printf("%d ",zero);
}
printf("\n");
}
}
void main(){
TSmatrix *T;
T=Setmatrix();
printf("三对角矩阵:\n");
TSmatrixout(T);
T=Trabsmatrix(T);
printf("转置后三对角矩阵:\n");
TSmatrixout(T);
}
...全文
相关推荐
对三角矩阵压缩转置算法
数据结构与算法试探报告 矩阵实验 对三角矩阵 三元组压缩 转置
DeepSeek专家模式:专业级AI推理架构与实战方法论
大模型的‘专家模式’并非简单升级,而是面向高确定性专业场景构建的深度推理系统。其核心在于混合专家路由(MoE)与长链思维链(CoT)的耦合设计,通过动态权重分配、跨专家协同验证和可信度分级溯源,实现法律条款分析、技术合规审查、工程故障归因等复杂任务的结构化求解。区别于通用对话模型,它强调约束建模、知识注入与结果可验证性,适用于合同审查、科研论证、系统架构设计等需证据链支撑的工程实践场景。DeepSeek专家模式正是这一范式的典型落地。
Mistral 7B实战指南:滑动窗口+GQA+AWQ量化部署全解析
大语言模型推理优化是工程落地的核心挑战,其中上下文长度、注意力机制与量化部署构成关键三角。滑动窗口注意力(SWA)突破传统位置编码限制,支撑32K长文本理解;分组查询注意力(GQA)通过共享KV头显著降低显存占用与首token延迟,成为7B级模型实现高吞吐的底层支柱;而AWQ量化则在NVIDIA GPU上兼顾精度与速度,使Mistral 7B在24GB显存设备上稳定运行。这些技术共同支撑起本地知识库问答、边缘实时摘要、离线教育系统等轻量高可用场景。本文聚焦Mistral 7B这一典型代表,详解其架构特性、量
稀疏矩阵快速转置C语言算法
数据结构,稀疏矩阵快速转置c语言算法,时间复杂性为O(n+t)。
求三角矩阵在压缩存储下的转置矩阵参照.pdf
求三角矩阵在压缩存储下的转置矩阵参照.pdf


