| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:输入一个稀疏矩阵,然后再输出稀疏矩阵,编译有错,不知为何。
只看楼主 加入收藏
新令狐冲
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-5
收藏
 问题点数:0 回复次数:1 
输入一个稀疏矩阵,然后再输出稀疏矩阵,编译有错,不知为何。

#include<iostream.h>
#include <stdafx.h>

template<class t>
class chainnode // 链表节点类
{
friend chain <t> ;
private:
t data;
chainnode<t>*link;
};
template<class t>
class chain //链表类
{
public:
chain()
{
first=0;
}
~chain();
chain<t>& append(const t& x);
void erase();
void zero()
{
first=0;
}
private:
chainnode<t> *first;
};
template<class t>
chain<t>::~chain() //链表类析构函数
{
chainnode<t>*next;
while(first)
{
next=first->link;
delete first;
first=next;
}
}
template<class t>
chain<t>&chain<t>::append(const t& x) // 链表的一个共享函数,在链表末尾添加一个元素
{
chainnode<t> *y;
y=new chainnode<t>;
y->data=x;
y->link=0;
if(first)
{
last->link=y;
last=y;
}
else
first=last=y;
return *this;
}
template<class t>
class chianterator //链表遍历器类
{
public:
t* initialize(const chain<t>& c)
{
location=c.first;
if(location) return &location->data;
return 0;
}
t* next()
{
if(!location) return 0;
location=location->link;
if(location) retrun &location->data;
return 0;
}
private:
chainnode<t> location;
};


template<class t>
class cnode // 矩阵节点类
{
public:
int operator !=(const cnode<t>&y)
{
return(value!=y.value);
}
void output(ostream& out) const
{
out<<"column"<<col<<"value"<<value;
}
private:
int col;
t value;
};
template<class t> //重载《
ostream& operator<<(ostream& out, const cnode<t> &x)
{
x.output(out);
out<<endl;
return out;
}
template<class t>
class headnode //矩阵行头节点类
{
public:
int operator!=(const headnode<t>&y)
{
return(row!=y.row);
}
void output(ostream& out)const
{
out<<"row"<<row;
}
private:
int row;
chain<cnode<t>> a;
};
template<class t>
ostream& operate<<(ostream& out, const headnode<t>& x)
{
x.output(out);
out<<endl;
return out;
}
template<class t>
class linkmatrix //矩阵类
{
friend ostream& operate<<(ostream&,const linkmatrix<t>&);
friend istream& operate>>(istream&,linkmatrix<t>&);
public:
linkedmatrix(){}
~linkedmatrix(){}
private:
int rows,cols;
chain<headnode<t>>a;
}


template<class t> //输入一个稀疏矩阵
istream& operator>>(istream& in, linkedmatrix<t>& x)
{
x.a.eraxe();
int terms;
cout<<"enter number of row, columns and terms "<<endl;
in>>x.rows>>x.cols>>terms;
headnode<t> h;
h.rows=0;
for(int i=1;i<=terms;i++)
{
cout<<"enter row,column and value of term"<<endl;
int row,col;
t value;
in>>row>>col>>value;
if(row>h.row)
{
if(h.row) x.a.append(h);
h.row=row;
h.a.zero();
}

cnode<t>*c=new cnode<t>;
c->col=col;
c->value=value;
h.a.append(*c);
}
if (h.row) x.a.append(h);
h.a.zero();
return in;

}


template<class t>
ostream& operate<<(ostream &out,const linkedmatix<t>&x)
{
chainlterator<headnode<t>>p;
out<<"rows="<<x.rows<<"columns="<<x.cols<<endl;
headnode<t> *h=p.initialize(x.a);
if(!h)
{
out<<"no non-zero terms"<<endl;
retrn out;
}
while(h)
{
out<<"row"<<h->row<<endl;
out<<h->a<<endl;
h=p.next;
}
return out;
}
void main(void)
{
linkedmatrix tong;
cin>>tong;
cout<<tong<<endl;
}

搜索更多相关主题的帖子: 矩阵 编译 输出 输入 
2007-05-02 11:19
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
收藏
得分:0 
friend chain <t> ;声明的是什么?
错的太多了

fighting!from now on!
2007-05-02 12:27
快速回复:输入一个稀疏矩阵,然后再输出稀疏矩阵,编译有错,不知为何。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025382 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved