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<<"
========== =============
"<<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<<"
========== =============
"<<endl;
 int i=1;
 while(p!=NULL){
  cout<<" "<<i<<" ==="<<p->name<<"== ===="<<p->score<<endl;
  p=p->next;
  i++;
 }
 cout<<"
"<<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<<"
========== =============
"<<endl;
 int i=1;
 while(p!=NULL){
  cout<<" "<<i<<" ==="<<p->name<<"== ===="<<p->score<<endl;
  p=p->next;
  i++;
 }
 cout<<"
"<<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;
}

좋은 웹페이지 즐겨찾기