社区
C语言
帖子详情
帮看一个数据结构的问题
vitamines
2004-06-26 11:08:38
将一个循环链表表示的稀疏多项式分解成两个多项式,使这两个多项式中各自仅含奇次项和偶次项,要求利用原来的循环链表的结点空间构成着两个链表
希望能给出代码
...全文
141
7
打赏
收藏
帮看一个数据结构的问题
将一个循环链表表示的稀疏多项式分解成两个多项式,使这两个多项式中各自仅含奇次项和偶次项,要求利用原来的循环链表的结点空间构成着两个链表 希望能给出代码
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qingdaolitao
2004-06-27
打赏
举报
回复
建议你将属性link换成next,first换成head舒服点。
另外,用不着用循环链表,单链表就可以把。
qingdaolitao
2004-06-27
打赏
举报
回复
重写了Classify(),其他的用你的function,对否?
void CircList::Classify( )
{
CircList oddlist,evenlist; //构造奇偶项的头结点。
CircListNode * p=first->link; //指向原多项式第一项。
CircListNode * q=p; //指向p
for(;p!=first;p=q->link) {
q=p;
if(p->exp%2==1){
//oddlist.Insert(p->coef,p->exp); 调用insert会重新new出一个结点,没利用原结点。
p->link=oddlist.getfirst()->link ;
oddlist.getfirst()->link =p;
}
else{
//evenlist.Insert(p->coef,p->exp); 同上。
p->link=evenlist.getfirst()->link ;
evenlist.getfirst()->link=p;
}
}
oddlist.last =oddlist.getlast ();
evenlist.last =evenlist.getlast ();
display( );
}
qingdaolitao
2004-06-27
打赏
举报
回复
收藏,修改中。。。
vitamines
2004-06-27
打赏
举报
回复
有没有行啊?
qingyuan18
2004-06-26
打赏
举报
回复
“一个循环链表表示的稀疏多项式”,
怎么表示的?
vitamines
2004-06-26
打赏
举报
回复
#include <iostream.h>
class CircList;
class CircListNode {
friend class CircList;
public:
CircListNode ( int xcoef = 0,int xexp=0,CircListNode *next = NULL )
: coef (xcoef),exp(xcoef),link (next){ } //构造函数private:
private:
int coef;
int exp; //结点数据
CircListNode *link; //链接指针
};
class CircList {
private:
CircListNode *first, *last;
//链表的表头指针、当前指针和表尾指针
public:
CircList( );
void Classify( );
void Insert(int xcoef,int xexp);
CircListNode * geteven( );
void display( );
CircListNode * getfirst( );
void link(CircList & list1);
CircListNode * getlast( );
};
void CircList::Insert(int xcoef,int xexp)
{
CircListNode *p=new CircListNode(xcoef,xexp,first);
last->link=p;
last=p;
}
CircList::CircList( )
{
first=last=new CircListNode(0,0,NULL);
first->link=last;
last->link=first;
}
CircListNode * CircList::geteven( )
{
Classify( );
CircListNode *p=first->link;
while(p!=first&&((p->exp)%2==1))
{
p=p->link;
}
if((last->exp%2)==1) p=NULL;
return p;
}
void CircList::display( )
{
CircListNode * p=first->link;
for(;p!=first;p=p->link)
cout<<"("<<p->coef<<","<<p->exp<<") ";
}
CircListNode * CircList::getfirst( )
{
return first;
}
void CircList::Classify( )
{
CircList oddlist,evenlist;
CircListNode * p=first->link;
for(;p!=first;p=p->link)
{
if(p->exp%2==1) oddlist.Insert(p->coef,p->exp);
else evenlist.Insert(p->coef,p->exp);
}
oddlist.link(evenlist);
CircListNode * q=oddlist.getfirst( );
p=first->link;
q=q->link;
for(;p!=first;p=p->link)
{
p->coef=q->coef;
p->exp=q->exp;
q=q->link;
}
display( );
}
void CircList::link(CircList & list1)
{
last->link=list1.getfirst( )->link;
list1.getlast( )->link=first;
}
CircListNode * CircList::getlast( )
{
CircListNode *p=first->link;
for(;p!=first;p=p->link)
;
return p;
}
vitamines
2004-06-26
打赏
举报
回复
2x43+3x30+6x29+8x18+...+...
十万字全网最全
数据结构
代码
本文代码实现基本按照《
数据结构
》课本目录顺序,外加大量的复杂算法实现,一篇文章足够。能换你
一个
收藏了吧?
十万字
数据结构
笔记
上次发操作系统笔记,很快浏览上万,这次
数据结构
比上次硬核的多哦,同样的会发超硬核代码,关注吧。
【算法与
数据结构
】—— 并查集
并查集是一种树型的
数据结构
,用于处理一些不相交集合的合并及查询
问题
(即所谓的并、查)。比如说,我们可以用并查集来判断
一个
森林中有几棵树、某个节点是否属于某棵树等。并查集主要由
一个
整型数组pre[ ]和两个函数find( )、join( )构成。 数组 pre[ ] 记录了每个点的前驱节点是谁,函数 find(x) 用于查找指定节点 x 属于哪个集合,函数 join(x,y) 用于合并两个节点 x 和 y 。
【C
数据结构
】迷宫
问题
文章目录一、迷宫
问题
的思路二、简单迷宫的代码实现三、地下迷宫
问题
的思路四、地下迷宫的代码实现 前言:本章记录作者学习中,遇到的两个比较有趣的
问题
,
一个
简单和
一个
较复杂的迷宫
问题
。 一、迷宫
问题
的思路 让我们先来看简单的:迷宫
问题
它的具体要求: 输入描述: 输入两个整数,分别表示二维数组的行数,列数。再输入相应的数组,其中的1表示墙壁,0表示可以走的路。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。 如 5 5 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1
数据结构
--一笔画
问题
描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写
一个
程序,判断
一个
图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入 第一行只有
一个
正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章