我创建了一个类描述链表,但是比知道为什么总是内存报错,有人可以帮我看看吗?
#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;
}