//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++
最新推荐文章于 2022-06-16 15:12:03 发布