#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<stdio.h>
using namespace std;
struct Node
{
int number;
char *a;
Node * next;
};
Node* insert(Node * &head);
void del(Node * &head, int key);
void show(const Node * head);
void GreatList(Node * &head);
void main()
{
int k;
Node * head = NULL;
cout << "初始化链表:" << endl;
GreatList(head);
cout << "插入学生:" << endl;
insert(head);
cout << "输入删掉的学生信息";
cin >> k;
del(head, k);
show(head);
}
void GreatList(Node * &head)
{
Node *s, *p = NULL;
s = new Node;
cin >> s->number;
scanf("%s",&s->a);
while (s->number != 0)
{
if (head == NULL)
head = s;
else
p->next = s;
p = s;
s = new Node;
cin >> s->number;
scanf("%s", &s->a);
}
p->next = NULL;
delete s;
return;
}
Node* insert(Node * &head)
{
Node * s, *p, *q,*sn,*pre;
sn = head;
pre = head;
s = new Node;
cin >> s->number;
scanf("%s", &s->a);
s->next = NULL;
if (head == NULL)
{
head = s;
}
else
{
while (s->number > sn->number&&sn->next!=NULL)
{
pre = sn;
sn = sn->next;
}
if (s->number <= sn->number)
{
if (head == sn)
{
head = s;
s->next = sn;
}
else
{
pre->next = s;
s->next = sn;
}
}
else
{
sn->next = s;
}
}
return head;
}
void del(Node * &head, int key)
{
Node * p;
if (!head)
{
cout << "列表为空!\n";
return;
}
if (head->number == key)
{
p = head;
head = head->next;
delete p;
p = NULL;
cout << key << "列表头节点已被删除\n";
return;
}
for (Node * pg = head; pg->next!=NULL; pg = pg->next)
{
if (pg->next->number == key)
{
p = pg->next;
pg->next = p->next;
delete p;
cout << key << "已被删除\n";
return;
}
}
cout << key << "不存在链表中\n";
}
void show(const Node * head)
{
cout << "现在的列表为:";
while (head)
{
cout << head->number << endl;
char *arr = head->a;
cout << arr;
head = head->next;
}
}