gpt4 book ai didi

浅析C++中单链表的增、删、改、减

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅析C++中单链表的增、删、改、减由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

首先是是一个简单的例子,单链表的建立和输出。 程序1.1 。

复制代码 代码如下

#include<iostream> #include<string> using namespace std; struct Student{  string name;  string score;  Student *next;//定义了指向Candidate类型变量的指针 }; int main(){  int n;//  cout<<"请输入学生的总数:";  cin>>n;  int i=1;  Student *p=NULL;  Student *node=NULL;  Student *head=NULL;  //建立链表  for(;i<=n;i++){   node=new Student;   cout<<"请输入第"<<i<<"个同学的姓名:";   cin>>node->name;   cout<<"请输入第"<<i<<"个同学的成绩:";   cin>>node->score;   if(head==NULL)    head=node;   else    p->next=node;   p=node;   if(i==n){    p->next=NULL;   }  }  //输出链表  p=head;  cout<<"链表已经建立!"<<endl;  cout<<"\n==========下面输入刚才的数据=============\n"<<endl;  i=1;  while(p!=NULL){   cout<<"第"<<i<<"个同学==="<<p->name<<"==成绩===="<<p->score<<endl;   p=p->next;   i++;  }  //销毁链表  Student *d;  p=head;  while(p!=NULL){   d=p;   p=p->next;   delete d;  }  return 0; } 。

在程序1.1中,我们已经建立了一个链表。然后,我们在小樱和鸣人之间插入一个佐井同学的成绩 。

复制代码 代码如下

#include<iostream> #include<string> using namespace std; struct Student{  string name;  string score;  Student *next;//定义了指向Candidate类型变量的指针 }; Student * Create(Student * head){  Student *p=NULL;  Student *node=NULL;  int n;//  cout<<"请输入学生的总数:";  cin>>n;  for(int i=1;i<=n;i++){   node=new Student;   cout<<"请输入第"<<i<<"个同学的姓名:";   cin>>node->name;   cout<<"请输入第"<<i<<"个同学的成绩:";   cin>>node->score;   if(head==NULL)    head=node;   else    p->next=node;   p=node;   if(i==n){    p->next=NULL;   }  }  return head; } void Print(Student * head){  Student *p=NULL;  p=head;  cout<<"链表已经建立!"<<endl;  cout<<"\n==========下面输入刚才的数据=============\n"<<endl;  int i=1;  while(p!=NULL){   cout<<"第"<<i<<"个同学==="<<p->name<<"==成绩===="<<p->score<<endl;   p=p->next;   i++;  }  cout<<"\n"<<endl; } void Insert(Student * head,int k){  Student *p=NULL;  Student *node=NULL;  p=head;  int i=1;  while(p!=NULL){   if(i+1==k){    node=new Student;    cout<<"第"<<k<<"位同学的名字:";    cin>>node->name;    cout<<"第"<<k<<"位同学的成绩:";    cin>>node->score;    node->next=p->next;    p->next=node;   }   p=p->next;   i++;  } } void Destory(Student * head){     Student *d;  Student *p=NULL;  p=head;  while(p!=NULL){   d=p;   p=p->next;   delete d;  } } int main(){  Student *head=NULL;  //创建链表  head=Create(head);  //输出链表  Print(head);  //插入数据  int k;  cout<<"请输入你要插入的同学的序号:";  cin>>k;  Insert(head,k);  //输出链表  Print(head);  //销毁链表     Destory(head);  return 0; } 。

现在,佐井同学的成绩已经插入。 但是,卡卡西老师发现,鸣人的成绩抄错了,实际上是100,需要修改成绩;然后,佐助同学辍学了,所以,还要删除他的成绩.

复制代码 代码如下

#include<iostream> #include<string> using namespace std; struct Student{  string name;  string score;  Student *next;//定义了指向Candidate类型变量的指针 }; Student * Create(Student * head){  Student *p=NULL;  Student *node=NULL;  int n;//  cout<<"请输入学生的总数:";  cin>>n;  for(int i=1;i<=n;i++){   node=new Student;   cout<<"请输入第"<<i<<"个同学的姓名:";   cin>>node->name;   cout<<"请输入第"<<i<<"个同学的成绩:";   cin>>node->score;   if(head==NULL)    head=node;   else    p->next=node;   p=node;   if(i==n){    p->next=NULL;   }  }  return head; } void Print(Student * head){  Student *p=NULL;  p=head;  cout<<"链表已经建立!"<<endl;  cout<<"\n==========下面输入刚才的数据=============\n"<<endl;  int i=1;  while(p!=NULL){   cout<<"第"<<i<<"个同学==="<<p->name<<"==成绩===="<<p->score<<endl;   p=p->next;   i++;  }  cout<<"\n"<<endl; } void Insert(Student * head,int k){  Student *p=NULL;  Student *node=NULL;  p=head;  if(k==1){    node=new Student;    cout<<"第1位同学的名字:";    cin>>node->name;    cout<<"第1位同学的成绩:";    cin>>node->score;    node->next=head->next;    head=node;  }  int i=1;  while(p!=NULL){   if(i+1==k){    node=new Student;    cout<<"第"<<k<<"位同学的名字:";    cin>>node->name;    cout<<"第"<<k<<"位同学的成绩:";    cin>>node->score;    node->next=p->next;    p->next=node;   }   p=p->next;   i++;  } } void Destory(Student * head){     Student *d;  Student *p=NULL;  p=head;  while(p!=NULL){   d=p;   p=p->next;   delete d;  } } void Alter(Student * head,int k){  int i=1;  Student *p=head;  while(p!=NULL){   if(i==k){    cout<<"第"<<k<<"位同学的名字:";    cin>>p->name;    cout<<"第"<<k<<"位同学的成绩:";    cin>>p->score;   }   p=p->next;   i++;  } } Student * Delete(Student * head,int k){  int i=1;  Student *p=head;  Student *d=head;  if(k==1){   head=head->next;  }else{   while(p!=NULL){    if(i+1==k){     p->next=p->next->next;    }    p=p->next;    i++;   }  }  return head; } int main(){  Student *head=NULL;  //创建链表  head=Create(head);  //输出链表  Print(head);  //插入数据  int k;  cout<<"请输入你要插入的同学的序号:";  cin>>k;  Insert(head,k);  //输出链表  Print(head);  //修改链表  cout<<"请输入你要修改的同学的序号:";  cin>>k;  Alter(head,k);  //输出链表  Print(head);  //删除其中的一个项  cout<<"请输入你要删除的同学的序号:";  cin>>k;  head=Delete(head,k);   //输出链表  Print(head);  //销毁链表     Destory(head);  return 0; } 。


浅析C++中单链表的增、删、改、减

浅析C++中单链表的增、删、改、减

最后此篇关于浅析C++中单链表的增、删、改、减的文章就讲到这里了,如果你想了解更多关于浅析C++中单链表的增、删、改、减的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com