m0_74203003 2023-02-20 09:07 采纳率: 85.7%
浏览 31
已结题

C++我创建了一个类描述链表,但是比知道为什么总是内存报错,能帮我看看怎么回事吗?

我创建了一个类描述链表,但是比知道为什么总是内存报错,有人可以帮我看看吗?

#ifndef LIST1_H_
#define LIST1_H_


#include<iostream>


using namespace std;


struct linked
{
  int a;
  linked * next;
};


class list
{
  private:
  linked * head;
  linked * tail;
  int len;
  public:
  list(int i);
  void ins(int  in,int i);
  void del(int i);
  void show(int i);
  void showall();
  int le();
  ~list();
};


#endif



#include"list1.h"


list::list(int i)    //初始化链表
{
  linked * head = new linked;
  tail = head;
  head->a = i;
  head->next = NULL;
  len = 1;

}

void list::ins(int in, int i)   //在第i个链表后追加
{
  if(i > len)
    cout<<"error input"<<endl;
  else
{
  len++;
  linked * sp = new linked;
  if(i == 0) 
{
    sp->next = head;
    head = sp;
    sp->a = in;
}
  else
{
    linked * st = head;
    while(i - 1)
{
    st = st->next;
    i--;
}
    sp->a = in;
    if(st->next)
{
      sp->next = NULL;
      tail = sp;
}
    else sp->next = st->next;
    st->next = sp;
}
}
}


void list::del(int i)    //删除第i个链表
{
  if((i > len) || (i < 1) || (head == tail))
     cout<<"error del"<< endl;
  else
{
  len--;
  linked * sp = head;
  if(i = 1)   
{
   head = head->next;
   delete sp;
}
  else
{
  linked * st;
  while(i - 1)
{
  i--;
  sp = sp->next;
} 
  st = sp->next;
  sp->next = (sp->next)->next;
  delete st;
}
}
}

void list::show(int i)
{
  if((i < 1) || (i >len))
     cout<<"error show"<<endl;
  else
{
  linked * sp =head;
  while(i - 1)
{
  i--;
  sp = sp->next;
}
  cout<<sp->a;
}}

void list::showall()
{
  int  t = 1;
  while(t <=len)
{
  show(t);
  cout<<" , ";
  t++;
}
  cout<< endl;
}

int list::le()
{
  return len;
 }

 
list::~list()
{
  linked * sp = head;
  
  while(sp->next)
{
  linked * st;
  st = sp;
  sp = sp->next;
  delete st;
}
  delete sp;
 
} 














展开全部

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-02-20 09:15
    关注

    21行、56行
    if(i = 0)
    改为
    if(i == 0)
    ==
    50行
    head = tail
    改为
    head == tail

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    m0_74203003 2023-02-20 10:57

    感谢回答,但是还是不行,好像还是有问题

    回复
    快乐鹦鹉 回复 m0_74203003 2023-02-20 11:09

    list::list(int i)              //初始化链表头
    {
      linked * head = new linked;
     head->next  = NULL;
      tail = head;
      head->a = i;
      len = 1;
    
    }
    
    

    回复
    m0_74203003 回复 快乐鹦鹉 2023-02-20 11:25

    还是不行,而且show(i)也用不了

    回复
    展开全部4条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月6日
  • 已采纳回答 2月27日
  • 修改了问题 2月20日
  • 修改了问题 2月20日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部