链表的一些基本功能,代码如下
`
因为有格式问题,include端省略
using namespace std;
//---------------------------
struct student
{
long number;
float score;
student* next;
};
//---------------------------
student* head;
//---------------------------
student* getNode()
{
long number;
float score;
cin >> number >> score;
if (!number)
return NULL;
student* p = new student; //开辟内存
p->number = number;
p->score = score;
p->next = NULL;
return p;
}
//---------------------------
void Create()
{
if ((head = getNode()) == 0)
return;
for (student* pE = head,pS; pS = getNode(); pE = pS)
{
pE->next = pS;
}
}
//---------------------------
void Show()
{
cout << "链表内容为" << endl;
for (student temp = head; temp; temp = temp->next)
{
cout << temp->number << "," << temp->score << endl;
}
}
//---------------------------
void Delete(long setNumber)
{
student* temp = head;
student* temp_1 = NULL;
if (temp->number == setNumber) //删除头节点
{
student* Node = head;
head = head->next;
delete Node;
return;
}
else
{
while(temp)
{
if (temp->number == setNumber)
{
student* Node = temp;
temp_1->next = temp->next;
delete Node;
return;
}
temp_1 = temp;
temp = temp->next;
}
}
}
//---------------------------
void Insert(student& stu) //根据Number大小决定顺序
{
student* Node = new student;
student* temp = head;
student* temp_1 = NULL;
if (stu.number < head->number)
{
*(Node) = stu;
Node->next = head;
head = Node;
return;
}
while (temp)
{
if (stu.number < temp->number)
{
*(Node) = stu;
Node->next = temp;
temp_1->next = Node;
return;
}
temp_1 = temp;
temp = temp->next;
}
}
//---------------------------
int main()
{
cout << "请输入数据" << endl;
Create();
Show();
Delete(10);
Show();
student stu;
stu.number = 10;
stu.score = 5;
Insert(stu);
Show();
}
`
原文:https://www.cnblogs.com/zhaohhhh/p/14378026.html