- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单链表
//linelist.cpp
struct SLine
{
//type:line
double xb;
double yb;
double xe;
double ye
}
//node
class Item
{
public:
friend class List;//友元,保证List能够调用Item
private:
//构造函数,其实一般都把构造函数放public里面
Item (SLine line)
{
xb=line.xb;
yb=line.yb;
xe=line.xe;
ye=line.ye;
next=NULL;//节点中指针指空
}
Item *next;//指向Item的指针
double xb,yb,xe,ye;
};
//list
class List
{
public:
//构造函数(这回他又把构造函数写到public里了。。什么思维。。)
List()
{
list=NULL;
//list代表随机游动的指针
//也就是构造一个List的时候,还没有元素,指针空
}
//这是里是一个构造函数的多态(重载),也就是说当调用构造函数没参数的时候运行上面那个,有Line这个参数就运行下面这个。
List(SLine line)
{
list=new Item(line);
}
SLine List::insert(SLine line)
{
//调用了Item的构造函数
Item *pt=new Item(line);
pt-next=list;//让这个节点插入到list前
list=pt;
return line;
//默默觉得它没写完啊。。链表断了啊。。。
}
SLine List::append(SLine line)
{
Item *pt=new Item(line);//同上
if(list==NULL)
list=pt;//如果链表是空的,就直接添加
else
(end())-next=pt;
return line;
}
Item* List::end()//返回值是指向最后节点的指针
{
Item *prv,*pt;
for(prv=pt=list;pt;prv=pt,pt=pt-next){;}
//这句好难懂。。就是先把prv和pt都指向list(可以是链表中随便一个Item,然后判断pt,若pt不为空,就执行prv=pt,pt=pt-next,即向前挪一步,直到pt是空了,pt的前一个Prv就是末位。。。。
return prv;
}
void List::Delete(SLine line)
{
Item* pt;
for(pt=list)
//....
//不写了。。相同。。
//其实这段代码也略坑。。如果有两条线完全相同,他会都给删了的。。。
}
}
//整个代码里没有涉及list的移动,我猜list的移动是和鼠标点选有关,应该是鼠标点到哪条先就把那条线当list了。
//undo实现放在链表之外,大致思路是链表每改变一个状态,就将前状态放到堆栈里,我们现在只实现1步undo,就不用堆栈了,搞一个老状态就好
//
//another cpp in real
//其实应该另写文件的,这里就写到一起了
#include ...//上面那个的头文件
int main()
{
//建立链表
List ListforLine;//为了你读的方便点。。就和pdf里一样
List oldlist;//!!key!!,链表的老状态
//增加元素
addElm(SLine line)
{
oldlist=ListforLine;//操作前保存老状态
Listforline.append(line);
}
//删除元素
DelElm(...)
{
oldlist=ListforLine;//操作前保存老状态
//...其余相同
}
void Undo()
{
//so easy
List swaplist;//中转
swaplist=ListforLine;
ListforLine=oldlist;
oldlist=swaplist;
//把old和现在那个交换一下~~~
//当然,如果想实现多步undo,多存几个oldlist其实也可以,只是那样写成堆栈才显得你学过编程。。。。
}
}
画轴网
主函数代码:
您可能关注的文档
最近下载
- GB55023-2022施工脚手架通用规范(GB 55023-2022).doc VIP
- 心搏骤停和心肺脑复苏(共121张PPT).pptx VIP
- 四川成都环境投资集团有限公司招聘笔试题库2025.pdf
- 人教版四年级数学《上册全册》全套精品教学课件小学优秀课堂课件.pptx VIP
- 2025年新版人教版四年级上册英语 四上Unit 2 My friends单元整体教学设计(1).pdf VIP
- 建设工程项目管理操作手册.doc VIP
- 高中数学必修一常见题型归类.pdf VIP
- 七年级上册可爱的四川教案.pdf VIP
- 《商务礼仪与沟通》课程标准.docx VIP
- 北京现代汽车4S店建设项目可行性研究报告.pdf VIP
文档评论(0)