数据结构:C++链表类及一元多项式的实现时遇到的困难

书上要求一个链表类,一个结点类,不会写。
别人的博客上看到有四种方式:

  1. 复合类:在Node类中定义友元的方式,使List类可以访问结点的私有成员。
  2. 嵌套类:在List内部定义Node类,但是Node的数据成员放在public部分,使List和Node均可以直接访问Node的成员。
  3. 继承:在Node类中吧成员定义为protected,然后让List继承Node类。
  4. 直接用struct定义Node类,因为struct的成员默认为公有数据成员,所以可直接访问。

一开始采用第二种嵌套类,但发现不方便创建单独的结点。于是用第三种继承,把结点的数据域设为public,这样就OK了。这样用C++也能实现书本上的函数了。

Clearlist() 一直没搞定!
解决方法在循环中创建的对象每次循环后会自动delete,故不用加delete了。C++可以delete指向NULL的指针,但delete后依然是NULL,似乎没意义。
关于delete

对同一个内存空间使用两次 delete 表达式。当两个指针指向同一个动态创建的对象,删除时就会发生错误。如果在其中一个指针上做 delete 运算,将该对象的内存空间返还给自由存储区,然后接着 delete 第二个指针,此时则自由存储区可能会被破坏。

delete指针释放的是指向的内存空间。

delete &p的时候出错,表面看是陷入死循环。p是一个对象,为什么会这样?而且不加&,编译器会报错:表达式必须包含指针类型
解决方法:用析构函数删除对象。因为new出来的才要delete。笨啊


下面是一元多项式部分

傻了:

     Status InsertBefore(LNode &i, ElemType e);//将e插入到i结点之前
     Status InsertAfter(LNode &i, ElemType e);//将e插入到i结点之后

当时自作聪明,插入的是数据而不是结点,现在继承为一元多项式就麻烦了。唉……

链表类没写好,导致写一元多项式都是泪啊。由此得出:写基础的类要充分考虑到后面的!

快疯了……
太混乱了 先放一放
现在的主要问题:

  • 顺序错误,只有第一个数成功排序
  • 无法相加,同次的会分别显示

第二天找到解决方法了,问题竟然是把continue写成break了 我晕。基础不过关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值