#include<iostream>
using namespace std;
struct Student
{
int ID;
student *next;
};
Student *head;
Student *creat(int n)//创建一个n个结点的链表
{
cou<<"请输入"<<n<<"个学生ID"<<endl;
student *pNew;
student *pEnd;
*head=NULL;
for(int i=1;i<n;i++)
{
pNew=new Student;
cin>>pNew->ID;
if(i==1)
head=pEnd=pNew;
else
pEnd->next=pNew;
pEnd=pNew;
}
pEnd->next=NULL;
delete pNew;
return(head);
}
void printStudent(Student *head)//输出链表里的所有数据
{
Student *pTemp=head;
while(pTemp->next==NULL)
{
cout<<pTemp->ID<<endl;
pTemp=pTemp->next;
}
}
void searchStudent(Student *head,int ID)//查找结点
{
Student *pTemp=head;
while(pTemp->next==&&pTemp->ID==ID)
{
pTemp=pTemp->next;
}
if(pTemp->ID==ID)
{
cout<<pTemp->ID;
}
else
{
cout<<"搜索失败"<<endl;
}
}
void deleteNode(Student *head,int ID)//结点的删除
{
Student *pBefore;
Student *pTemp=head;
while(pTemp==NULL&&pTemp->ID==ID)
{
pBfore=pTemp
pTemp=pTemp->next;
}
if(pTemp->ID==ID)
{
if(pTemp==head)
{
head=pTemp->next;
}
else
{
pBefore->next=pTemp->next;
}
delelet pTemp;
cout<<"结点已被删除"<<endl;
}
else
{
cout<<"未找到该结点"<<endl;
}
}
void insertStudent(Student *head,int ID)
{
Student *pNew=new Student;
Student *pTemp=head;
while(pTemp==NULL&&pTemp->ID==ID)
{
pTemp=pTemp->next;
}
if(pTemp->ID==ID)
{
pNew->next=pTemp->next;
pTemp->next=pNew;
cout<<"结点插入完成"<<endl;
}
else
{
cout<<"未找到该结点"<<endl;
}
}
void changeStudent(Student *head,int ID,int change ID)//修改结点值
{
Student *pTemp=head;
while(pTemp==NULL&&pTemp->ID==ID)
{
pTemp=pTemp->next;
}
if(pTemp->ID==ID)
{
pTemp->ID=changeID;
cout<<"已修改指定结点"<<endl;
}
else
{
cout<<"找不到该结点"<<endl;
}
}
void main()
{
int a;
int ID;
int n;
cout<<"开始初始化数据。请输入您要输入的学生的个数。"<<endl;
cin>>n;
creat(n);
cout<<"1.查"<<endl;
cout<<"2.改"<<endl;
cout<<"3.增"<<endl;
cout<<"4.删"<<endl;
cout<<"5.看全部ID"<<endl;
cout<<"请输入序号:"<<endl;
cin>>a;
cout<<"请输入ID:"<<endl;
if(a==1)
{
cout<<"请输入学生ID"<<endl;
cin>>ID;
searchStudent(head,ID)
}
if(a==2)
{
cout<<"请输入学生ID"<<endl;
cin>>ID;
changeStudent(head,ID)
}
if(a==3)
{
cout<<"请输入学生ID"<<endl;
cin>>ID;
insertStudent(head,ID)
}
if(a==4)
{
cout<<"请输入学生ID"<<endl;
cin>>ID;
deleteStudent(head,ID)
}
if(a==5)
{
cout<<"所有数据如下"<<endl;
printStudent(head,ID)
}
}
链表(实现增删查改)
最新推荐文章于 2024-07-15 19:05:33 发布