##单向链表 插入 删除 代码
#include<iostream>
using namespace std;
typedef struct id
{
int number;
char name[20];
struct id *next;
} student;
int main(void)
{
int n,i;
student *head,*pre;
student *p1,*p2;
head=new student; //do not forget assign a dynamic memory figure out the difference between head=p2=new student; and lay out
p2=new student;
head->next=p2;
cout<<"please enter student data "<<endl<<"1.number 2.name"<<endl<<"number 1: ";
cin>> p2->number >> p2->name;
for(int i=0;i<2;i++)
{
p1=new student;
cout<<"number "<<i+2<<":";
cin>>p1->number>>p1->name;
p2->next=p1;
p2=p1;
}
p1->next=NULL;
p1=head;
cout<<"print out the concrete data of each student"<<endl;
while(p1->next!=NULL)
{
p1=p1->next;
cout<<"student id:"<<p1->number<<" "<<"student name:"<<p1->name<<endl;
}
pre=new student; // attention!
cout<<"do you want to add new student?"<<endl;
cout<<"first student number / second student name"<<endl;
cin>>pre->number>>pre->name;
cout<<"want to be number:";
cin>>n;
p1=head;
for(i=1;i<n;i++)
{
p1=p1->next;
}
pre->next=p1->next;
p1->next=pre;
p1=head;
while(p1->next!=NULL)
{
p1=p1->next;
cout<<"student id:"<<p1->number<<" "<<"student name:"<<p1->name<<endl;
}
p1=head;
int number;
cout<<"now you are allowed to withdraw some student id"<<endl;
cout<<"the id number:";
cin>>number;
while(p1->number!=number)
{
p2=p1;
p1=p1->next;
}
p2->next=p1->next;
p1=head;
while(p1->next!=NULL)
{
p1=p1->next;
cout<<"student id:"<<p1->number<<" "<<"student name:"<<p1->name<<endl;
}
return 0;
//linked list
} */