您的位置:首页 > 编程语言 > C语言/C++

单链表的实现 C++

2017-12-20 12:27 148 查看
//struct node
//{
//	datatype info;
//	node *next;
//	node() :next(NULL) {}
//	node(datatype x) :info(x), next(NULL) {}
//};
class node //结点类
{
public:
node();
node(datatype x)
{
info = x;
next = NULL;
}
~node();

datatype info;
node *next;
private:

};

node::node()
{
next = NULL;//初始化
}
node::~node()
{
}

class linklist //链表类
{
public:
linklist();
~linklist();
void add(datatype x);
void display();
void _delete();

private:
node *head;
int length;
};
linklist::linklist()
{
head = new node();
length = 0;
}
linklist::~linklist()
{
}
void linklist::add(datatype x)
{
if (head->next == NULL)
{
node *p = new node(x);
head->next = p;
}
else
{
node *temp = head->next;
node *p = new node(x);
while (temp->next != NULL)
{
temp = temp->next;

}
temp->next = p;
}
}
void linklist::display()
{
node *temp = head->next;
if (temp == NULL)
{
cout << "LinkList is empty" << endl;
return;
}
else
{
while (temp)
{
temp->info.display();
temp = temp->next;
}
}

}
void linklist::_delete()
{
string delnumber;
cout << "请输入要删除学生学号:" << endl;
cin >> delnumber;

node *temp = head->next, *p = temp;
if (temp == NULL)
{
cout << "表是空的。" << endl;
return;
}
else
{
if (temp->info.number == delnumber)//要删除的是第一个节点
{
p = temp;
temp = temp->next;
head->next = p->next;
delete(p);
}
while (temp&&temp->next != NULL)
{

if (temp->next->info.number == delnumber)
{
p = temp->next;//temp为要删除节点的前驱
temp->next = p->next;
delete(p);

}
else
{
temp = temp->next;
}

}
cout << "删除成功" << endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 数据结构 C++