데이터 구조 - 동적 링크

  ,           。



//   .cpp :              。
//

#include "stdafx.h"



#include <iostream>
using namespace std;
class student
{
public:
 int num;
 student *next;
};
int n;
student *create(void)
{
  cout<<"    "<<endl;
  student *head;
  student *p1,*p2;
  n=0;
  p1=p2=new student;
  cin>>p1->num;
  head=NULL;
while(p1->num!=0)
{
 n=n+1;
if(n==1)
 head=p1;
else 
 p2->next=p1;
p2=p1;

p1=new student;

cin>>p1->num;
}
p2->next=NULL;
cout<<"      "<<endl;
return(head);}
void *print (student *head)
{cout<<"        "<<endl;
student *p;
p=head;
for(;p!=NULL;)
{cout<<p->num<<endl;
p=p->next;}

return 0;
}
student *research(student *head)//    
{cout<<"        "<<endl;
 student *p;
 p=head;
 int n;
 cout<<"        "<<endl;
 cin>>n;//           
 for(;p->num!=n;)
 {
  p=p->next;
 }
 cout<<p->num;
 return (head);
}
student *del(student *head)
{cout<<"        "<<endl;
 student *p,*s;
 p=head;
 int i,n;
 cout<<"        "<<endl;
 cin>>n;
 for(i=1;i<n;i++)
 {
  s=p;
  p=p->next;
 }
 if(i=n-1)
 {
  if(p==head)
  {
   head=p->next;
  }
  else
   s->next=p->next;
 }


  return (head);
}


student *insert(student *head)//    (   )
{cout<<"      "<<endl;
 student *p1,*p2,*s;
 p1=head;
 p2=p1->next;
 s=new student;
 cout<<"        "<<endl;
 cin>>s->num;
 int n,i;
 cout<<"      "<<endl;
 cin>>n;
    cout<<"q2"<<endl;
	 for(i=0;i<n;i++)
	 {
		 cout<<"q"<<i<<endl;
		  p1=p1->next;
		  p2=p2->next;
	 }
	 p1->next=s;
     s->next=p2;
 cout<<head->num;
     return (head);
}
student *bianli(student *head)//    
{
 student *p;
 char p1;
 p=head;
 cout<<"  N   "<<endl;
 cout<<"          "<<endl;
 for(;p!=NULL;)
 {
  cin>>p1;
  if(p1=='N')
  {cout<<"  ";
   p=p->next;
  }
  else
  {
   cout<<"      "<<endl;
   cin>>p->num;
   p=p->next;
  }
 }
 return (head);
}
int main()
{
 student *head;
 head=create();
 print(head);
 insert(head);
 print(head);
  del(head);
 print(head);
 bianli(head);
 print(head);
 research(head);
 print(head);
 return 0;
}

좋은 웹페이지 즐겨찾기