任务:链表的应用
创建链表(无序链表)
Node *create()
{
Node *head;
Node *p,*pend;
int id;
cout<<"请输入学号";
cout<<"(学号为0表示结果输入):";
cin>>id;
head=0;
while(id!=0){
p=new Node;
p->num=id;
cout<<"请输入C++分数:";
cin>>p->score;
if(head==0){
head=p;
pend=p;
}
else{
pend->next=p;
pend=p;
}
cout<<"请输入学号:";
cin>>id;
}
if(head) pend->next=0;
return head;
}
输出链表
void print(Node *head)
{
Node *p=head;
if(p=0){cout<<"链表为空!\n";return;)
cout<<"链表上各个节点的值为:\n";
while(p!=NULL){
cout<<p->num<<'\t';
cout<<p->score<<endl;
p=p->next;
}
cout<<'\n';
}
删除链表结点
链表是空表,返回头指针指向就好,例如头指针head为NULL,返回NULL就好;
删除首结点:
Node *p2=head; //定义p2指向首结点;
head=head->next; //首结点后移赋值给首结点,即第二个结点当作首结点;
delete p2; //释放原首结点的空间;
p1->next=p2->next; //p1指向p2的前驱结点;
delete p2; //删除p2,删除中间结点;
当p2->next为0是可以作为删除尾结点;
明日任务:链表