Từ 1 tới 1 trên tổng số 1 kết quả

Đề tài: code của Liên Kết Đôi(QLSV) Giúp Em

  1. #1
    Ngày gia nhập
    03 2012
    Bài viết
    0

    Post code của Liên Kết Đôi(QLSV) Giúp Em

    đây là code của Liên Kết Đơn theo kiểu quản lý sinh viên, Các Anh Chị Hướng Dẫn em chuyển Về Liên Kết đôi em làm xong liên kết đơn, đôi kiểu số int và là liên kết đơn kiểu sinh viên chỉ có kiểu sinh viên liên kết đôi kiểu sinh viên không biết làm sao ^^! bí lắm em mới hỏi^^! và xem coi mấy bài liên kết của em có gì sai sót không
    thanks mấy anh chị rất nhiều

    liên kết đơn(QLSV)//Thầy code

    Code:
    #include<iostream>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<stdio.h>
    
    /*Cau truc thong tin chung ve sinh vien*/
    typedef struct
    {
    	int masv;
    	char hoten[30];
    }sinhvien;
    
    /*Cau truc cua mot node trong danh sach lien ket don*/
    typedef struct node
    {
    	sinhvien infor;
    	struct node *next;
    }*nodeptr;
    
    /*Cac thao tac tren danh sach lien ket don*/
    
    /*==================Khoi dong danh sach lien ket don=============== */
    void init(nodeptr *plist)
    {
    	*plist=NULL;
    }
    
    /*============Cap phat mien nho cho mot node cua danh sach lien ket don===========*/
    nodeptr getnode()
    {
    	nodeptr p;
    	p=(nodeptr)malloc(sizeof(struct node));
     	return p;
    }
    
    /*==========Giai phong mien nho cho mot node cua danh sach lien ket don===========*/
    void freenode(nodeptr p)
    {
    	free(p);
    }
    
    /*==================Kiem tra tinh rong cua danh sach lien ket don===========*/
    int empty(nodeptr *plist)
    {
    	if(*plist==NULL) return 1;
    	return 0;
    }
    
    /*==================Them mot node vao dau danh sach lien ket don============*/
    nodeptr add_top(nodeptr *plist,sinhvien sv)
    {
    	nodeptr p;
    	p=getnode();
    	p->infor=sv;
    	if(empty(plist))
    	{
    		p->next=NULL;
    		*plist=p;
    		return p;
    	}
    	p->next=*plist;
    	*plist=p;
    	return p;
    }
    
    /*===================Them mot node vao cuoi danh sach lien ket don================*/
    nodeptr add_bottom(nodeptr *plist,sinhvien sv)
    {
    	nodeptr p,q;
    	      q=getnode();
    	q->infor=sv;
    	if(empty(plist))
    	{
    		q->next=NULL;
    		*plist=q;
    		return q;
    	}
    	p=*plist;
    	while(p->next!=NULL)
    	{
    		p=p->next;
    	}
    	p->next=q;
    	q->next=NULL;
    	return q;
    }
    
    /*===================Them node truoc node p trong danh sach lien ket don===============*/
    nodeptr add_before(nodeptr *plist,sinhvien sv,int n)
    {
    	nodeptr p,q;
    	q=getnode();
    	q->infor=sv;
    	if(empty(plist))
    	{
    		cout<<"\n Vi tri khong hop le ";
    		//delay(2000);
    		return(NULL);
    	}
    	p=*plist;int i=0;
    	while(p!=NULL&&i<n)
    	{
    		i++;
    		p=p->next;
    	}
    	if(p==NULL)
    	{
    		cout<<"\n Vi tri khong hop le ";
    		//delay(1000);
    		return(NULL);
    	}
    	q->next=p->next;
    	p->next=q;
    	return q;
    	getch();
    }
    
    /*==================Loai bo node o dau danh sach lien ket don==================*/
    void del_top(nodeptr *plist)
    {
    	nodeptr p,q;
    	if(empty(plist))
       	{
    		cout<<"\n Danh sach rong ";
    		//delay(2000);
    		return;
    	}
    	p=*plist;
    	q=p;
    	p=p->next;
    	*plist=p;
    	cout<<"\n Node vua loai bo ";
    	cout<<"\n Ho ten: "<<q->infor.hoten;
    	cout<<"\n Ma sinh vien: "<<q->infor.masv;
    	//delay(1000);
    	freenode(q);
     }
    
    /*===================Loai bo node o cuoi danh sach lien ket don===============*/
    void del_bottom(nodeptr *plist)
    {
    	nodeptr p,q;
    	if(empty(plist))
    	{
    		cout<<"\n Danh sach rong ";
     		//delay(2000);
    		return;
    	}
    	p=*plist;
    	if(p->next==NULL)
    	{
    		del_top(plist);
    		return;
    	}
      	while((p->next)->next!=NULL)
      	{
    		p=p->next;
    	}
      	q=p->next;
    	p->next=NULL;
    	cout<<"\n Node vua loai bo ";
    	cout<<"\n Ho ten: "<<q->infor.hoten;
    	cout<<"\n Ma sinh vien: "<<q->infor.masv;
    	//delay(1000);
    	freenode(q);
    
    }
    /*===================Loai bo node truoc node p trong danh sach lien ket don==================*/
    void del_before(nodeptr *plist,int n)
    {
    	nodeptr p,q;int i;
    	if(empty(plist))
    	{
    		cout<<"\n Danh sach rong ";
    		//delay(2000);
    		return;
    	}
     	p=*plist;
    	if(p->next==NULL)
     	{
    		del_top(plist);
      		return;
    	}
    	i=0;
    	while(p!=NULL&&i<n-1)
     	{
    		i++;
    		p=p->next;
    	}
     	if(p->next==NULL)
      	{
    		cout<<"\n Vi tri khong hop le";
    		//delay(2000);
    		return;
    	}
     	q=p->next;
    	p->next=q->next;
    	cout<<"\n Node vua loai bo ";
    	cout<<"\n Ho ten: "<<q->infor.hoten;
    	cout<<"\n Ma sinh vien: "<<q->infor.masv;
    	//delay(1000);
    	freenode(q);
    }
    
    /*====================Duyet danh sach lien ket don==============*/
    void duyet(nodeptr *plist)
    {
    	nodeptr p;
    	if(empty(plist))
     	{
    		cout<<"\n Danh sach rong ";
    		//delay(2000);
    		return;
    	}
    	int i=1;
    	p=*plist;
    	while(p!=NULL)
     	{
    		cout<<"\n Sinh vien thu: "<<i++;
      		cout<<"\n ---";
      		cout<<"\n Ho ten: "<<p->infor.hoten;
    		cout<<"\n Ma sinh vien: "<<p->infor.masv;
    		p=p->next;
      		cout<<"\n ------------------------" ;
    	}
    }
    
    /*====================Sap xep danh sach theo mot khoa=================*/
    void sapxepnode(nodeptr *plist)
    {
    	nodeptr p,q;
    	sinhvien temp;
    	for(p=*plist;p!=NULL;p=p->next)
     	{
    		for(q=p->next;q!=NULL;q=q->next)
      		{
    			if(p->infor.masv>q->infor.masv)
    			{
    				temp=p->infor;
    				p->infor=q->infor;
    				q->infor=temp;
    			}
    		}
    	}
    	cout<<"\n Danh sach sau khi duoc sap xep: ";
    	for(p=*plist;p!=NULL;p=p->next)
     	{
    		cout<<"\n Ho ten: "<<p->infor.hoten;
    		cout<<"\n Ma sinh vien: "<<p->infor.masv;
    	}
     }
    
    /*=======================Tim kiem danh sach================*/
    void searchnode(nodeptr *plist,int masv)
    {
    	nodeptr p;
    	p=*plist;
    	while(p!=NULL&&p->infor.masv!=masv)
    	p=p->next;
    	if(p==NULL)
     	{
    		cout<<"\n Sinh vien khong ton tai ";
    	}
    	else
     	{
    		cout<<"\n Sinh vien can tim ";
    		cout<<"\n Ho ten: "<<p->infor.hoten;
    		cout<<"\n Ma sinh vien: "<<p->infor.masv;
    	}
     }
    
    /*===================Ham thao tac===================*/
    int main()
    {
    	//clrscr();
    	nodeptr plist;
    	sinhvien sv1;
    	int vitri,masv;
    	int chon;
    	init(&plist);
    	do
     	{
    		// clrscr();
    		cout<<"\n\t THAO TAC VOI DANH SACH LIEN KET DON ";
      		cout<<"\n\t------------------------------------";
    		cout<<"\n\t 1.Them node vao dau danh sach ";
    		cout<<"\n\t 2.Them node vao cuoi danh sach ";
    		               cout<<"\n\t 3.Them node vao giua danh sach ";
    		cout<<"\n\t 4.Loai bo node o dau danh sach ";
    		cout<<"\n\t 5.Loai bo node o cuoi danh sach ";
    		               cout<<"\n\t 6.Loai bo node o giua danh sach ";
    		cout<<"\n\t 7.Duyet danh sach ";
    		cout<<"\n\t 8.Sap xep danh sach ";
    		cout<<"\n\t 9.Tim kiem danh sach ";
    		cout<<"\n\t 0.Thoat ";
    		cout<<"\n\n\t #chon (1->9 or 0 de thoat): ";
    		cin>>chon;
    		switch(chon)
      		{
    		    case 1:
    			    cout<<"\n Ho ten sinh vien: ";
    			    gets(sv1.hoten);
    			    cout<<"\n Ma sinh vien: ";
    			    cin>>sv1.masv;
    			    add_top(&plist,sv1);
    	    	break;
    	    	
    		    case 2:
    			    cout<<"\n Ho ten sinh vien: ";
    			    gets(sv1.hoten);
    			    cout<<"\n Ma sinh vien: ";
    			    cin>>sv1.masv;
    			    add_bottom(&plist,sv1);
    		    break;
    		    
    		    case 3:
    			    cout<<"\n Vi tri them: ";
    			    cin>>vitri;
    			    cout<<"\n Ho ten sinh vien: ";
    			    gets(sv1.hoten);
    			    cout<<"\n Ma sinh vien: ";
    			    cin>>sv1.masv;
    			    add_before(&plist,sv1,vitri-1);
    		    break;
    		    
    		    case 4:
    			    del_top(&plist);
    			    break;
    			    case 5:
    			    del_bottom(&plist);
    			    break;
    			    
    		    case 6:
    			    cout<<"\n Vi tri loai bo: ";
    			    cin>>vitri;
    			    del_before(&plist,vitri-1);
    		    break;
    		    
    		    case 7:
    			    duyet(&plist);
    			    break;
    		    case 8:
    		    	sapxepnode(&plist);
    		    break;
    		    
    		    case 9:
    			    cout<<"\n Ma sinh vien can tim: ";
    			    cin>>masv;
    			    searchnode(&plist,masv);
    		    break;
    		}
    		getch();
    	}
          while(chon!=0);
    }

    Danh Sách Liên Kết đôi(int)//tự code từ giáo trình

    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<stdio.h>
    struct Node 
    {
    	int   data;  	
    	Node*	     pPrev; 
    	Node*	     pNext;	
    };	
    struct List 
    {
    	Node* 	  pHead; 
    	Node* 	  pTail;		
    };	
    Node *getNode (int x) 
    {	
    	Node *p;
    	p=new Node; 	
    	if (p==NULL) 
    	{
    		cout<<"Khong du bo nho";  return NULL;
    	}
    	p->data=x; 	 
    	p->pPrev=p->pNext=NULL;
    	return p; 
    }
    void addHead(List &l, Node *new_node)
    {	
         if (l.pHead==NULL)
    	     l.pHead=l.pTail=new_node;
         else
    	{   new_node->pNext=l.pHead;	
    	    l.pHead->pPrev=new_node;	
    	    l.pHead=new_node; 	
    	}
    }
    void InitList(List &l)
    {
    	l.pHead=l.pTail=NULL;
    }
    void Display(List l)
    {
    	Node *p=l.pHead;
    	while(p!=NULL)
    	{
    		cout<<p->data<<" ";
    		p=p->pNext;
    	}
    }
    void addTail (List &l,Node *new_node)
    {	if  (l.pHead==NULL)  
    		l.pHead = l.pTail = new_node;
    	else
    	{  	l.pTail->pNext = new_node;		
    	   	new_node->pPrev = l.pTail;		
    	   	l.pTail = new_node; 			
    	}
    }
    Node*Kiemtra(List &l,int data)
    {
    	Node*temp=l.pHead;
    	while(temp!=NULL&&temp->data!=data)
    		temp=temp->pNext;
    	return temp;
    }
    void addBefore (List &l,Node *q,Node* new_node)
    {	Node* p =q->pPrev;
    	if  (q!=NULL)  
    	{  	new_node->pNext = q;		
    	   	q->pPrev = new_node;		
    		new_node->pPrev = p;		
    	   	if (p != NULL)   p->pNext = new_node; 
    	   	if (q == l.pHead)  l.pHead = new_node; 
    	}
    	else
    	   	addTail (l, new_node);	
    }
    
    void addAfter (List &l,Node *q,Node *new_node)
    {	
    	Node *p = q->pNext;
    	if  (q!=NULL) {  
    	   new_node->pNext = p;			
    	   if (p != NULL)   p->pPrev = new_node; 	
    	   new_node->pPrev = q;			
    	   q->pNext = new_node;			
    	   if (q == l.pTail)   l.pTail = new_node; 
    	}
    	else  
    	   addHead (l, new_node);  
    }
    int removeHead (List &l)
    {		
    	if ( l.pHead == NULL)	return 0;  
    	Node *p = l.pHead; 
    	l.pHead = l.pHead->pNext;
    	l.pHead->pPrev = NULL;
    	delete p;
    	if (l.pHead == NULL) 	l.pTail = NULL;
    	else    l.pHead->pPrev = NULL;  
    	return 1;    
    }
    int removeTail (List &l)
    {	
    	if (l.pTail == NULL) return 0;
    	Node *p = l.pTail; 
    	l.pTail = l.pTail->pPrev;
    	l.pTail->pNext = NULL;
    	delete p;
    	if (l.pHead == NULL)   l.pTail = NULL;
    	else      l.pHead->pPrev = NULL;
    	return 1;
    }
    int removeAfter (List &l, Node *q)
    {		
    	if (q == NULL)   return 0;
    	Node *p = q ->pNext ;
    	if  (p != NULL)
    	{  
    		q->pNext = p->pNext;
    	      	if  (p == l.pTail)    l.pTail  = q;
    	      	else     p->pNext->pPrev = q;
    	      	delete p;
    		return 1;
    	}
       else  return 0;
    }
    int removeBefore (List &l, Node *q)
    {		
    	if (q == NULL) return 0;
    	Node *p = q ->pPrev;
    	if (p != NULL)
    	{  
    		q->pPrev = p->pPrev;
    	      	if (p == l.pHead)   l.pHead = q;
    	      	else        p->pPrev->pNext = q;
    	      	delete p;
    		return 1;
    	 }	
        else  return 0;
    }
    int  removeNode (List &l, int n)
    {	
    	Node *p = l.pHead;
    	while (p != NULL)
    	{  
    		if (p->data== n)   break;
    	   	p = p->pNext;
    	}
    	if (p == NULL)  return 0;
    	Node *q = p->pPrev;
    	if  (q != NULL)
    		 return removeAfter (l, q);
    	else  	
    	return removeHead (l);	
    }
    
    
    int main()
    {
    	int chon,x,data,n;
    	int k;
    	List l;
    	InitList(l);
    	do
    	{	
    	
    		cout<<"1:Them Dau"<<endl;
    		cout<<"2:Them Cuoi"<<endl;
    		cout<<"3:Them Sau Node Q"<<endl;
    		cout<<"4:them Truoc Node Q"<<endl;
    		cout<<"5:Xoa Dau"<<endl;
    		cout<<"6:Xoa Cuoi"<<endl;
    		cout<<"7:Xoa Sau Node Q"<<endl;
    		cout<<"8:Xoa Truoc Node Q"<<endl;
    		cout<<"9:Xuat Theo Khoa Nhap Vao"<<endl;
    		cout<<"10:Tim Kiem Node"<<endl;
    		cout<<"11:Dem So Node"<<endl;
    		cout<<"12:Sap Sep Danh Sach"<<endl;
    		cout<<"Nhap Chon"<<endl;	
    		cin>>chon;
    		switch(chon)
    		{
    			case 1:
    				cout<<"nhap So Lan Can Nhap"<<endl;
    				cin>>k;
    				for(int i=1;i<=k;i++)
    				{
    					cout<<"Node= ";
    					cin>>x;
    					cout<<endl;
    					Node *p=getNode(x);
    					addHead(l,p);
    				}
    				Display(l);
    				cout<<endl;
    				break;
    			
    			case 2:
    				cout<<"nhap So Lan Can Nhap"<<endl;
    				cin>>k;
    				for(int i=1;i<=k;i++)
    				{
    					cout<<"Node= ";
    					cin>>x;
    					Node *p=getNode(x);
    					addTail(l,p);
    				}
    				Display(l);
    				cout<<endl;
    				break;
    			case 3:
    			cout<<"nhap So Lan Can Nhap"<<endl;
    			cin>>k;
    			for(int i=1;i<=k;i++)
    			{
    				cout<<"Nhap so can chen: ";cin>>x;
    				cout<<"Chen sau vao so: ";cin>>data;
    				Node*p=getNode(x);
    				Node*q=Kiemtra(l,data);
    				addAfter(l,q,p);
    			}
    				Display(l);
    				cout<<endl;
    				break;
    				
    			case 4:
    			cout<<"nhap So Lan Can Nhap"<<endl;
    			cin>>k;
    			for(int i=1;i<=k;i++)
    			{
    				cout<<"Nhap so can chen: ";cin>>x;
    				cout<<"Chen sau vao so: ";cin>>data;
    				Node*p=getNode(x);
    				Node*q=Kiemtra(l,data);
    				addBefore(l,q,p);
    			}
    				Display(l);
    				cout<<endl;
    				break;
    				
    			case 5:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    				cin>>k;
    				for(int i=1;i<=k;i++)
    				{
    					removeHead(l);
    				}
    				Display(l);
    				cout<<endl;
    				break;
    				
    			case 6:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    				cin>>k;
    				for(int i=1;i<=k;i++)
    				{
    					removeTail(l);
    				}
    				Display(l);
    				cout<<endl;
    				break;
    			
    			case 7:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    			cin>>k;
    			for(int i=1;i<=k;i++)
    			{
    				cout<<"Xoa sau vao so: ";cin>>data;
    				Node*q=Kiemtra(l,data);
    				removeAfter(l,q);
    			}
    				Display(l);
    				cout<<endl;
    				break;
    				
    				
    			case 8:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    			cin>>k;
    			for(int i=1;i<=k;i++)
    			{
    				cout<<"Xoa Truoc vao so: ";cin>>data;
    				Node*q=Kiemtra(l,data);
    				removeBefore(l,q);
    			}
    				Display(l);
    				cout<<endl;
    				break;
    				
    			case 9:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    			cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Nhap Node Can Xoa: ";cin>>n;
    				removeNode(l,n);
    			}
    				Display(l);
    				cout<<endl;
    				break;
    			
    		}	
    	}
    	while(chon!=-1);
    }
    Danh Sách Lien Kết đơn(int)//tự code
    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<stdio.h>
    //khai bao node
    struct Node
    {
    	int data;
    	Node *pNext;
    };
    //khai bao danh sach
    struct List
    {
    	Node*pHead;
    	Node*pTail;
    };
    // tao node
    Node*getNode(int x)
    {
    	Node *p;
    	p=new Node;//Cap Phat Vung Nho Cho Node
    	if(p==NULL)
    	{
    		cout<<"Khong Du Bo Nho!";
    		return NULL;
    	}
    	p->data=x;//gan du lieu cho phan tu p
    	p->pNext=NULL;
    	return p;
    }
    //tao danh sach rong
    void Init(List &l)
    {
    	l.pHead=l.pTail=NULL;
    }
    //Them dau danh sach
    void addHead(List &l,Node*new_Node)
    {
    	if(l.pHead==NULL)//neu phan tu dau rong
    	{
    		l.pHead=l.pTail=new_Node;//phan tu dau=phan tu cuoi=tao node
    	}
    	else
    	{
    		new_Node->pNext=l.pHead;
    		l.pHead=new_Node;
    	}
    }
    //Them cuoi danh sach
    void addTail(List &l,Node*new_Node)
    {
    	if(l.pHead==NULL)
    	{
    		l.pHead=l.pTail=new_Node;
    	}
    	else
    	{
    		l.pTail->pNext = new_Node;
    		l.pTail = new_Node ;
    	}	
    }
    //chen 1 node sau q
    void addAfter (List &l, Node *q, Node* new_Node)
    {
    	if (q!=NULL)  
    	{
    		new_Node->pNext = q->pNext;
    		q->pNext = new_Node; 	
    		if(q == l.pTail)
    			l.pTail = new_Node; 
    	}
    }
    //Xoa Dau danh sach
    int removeHead (List &l)
    {
    	if (l.pHead == NULL) return 0;
    	Node* p=l.pHead;
    	l.pHead = p->pNext;
    	if (l.pHead == NULL)  l.pTail=NULL; //Neu danh sach rong
    	delete p;
    	return 1;
    }
    //Xoa Cuoi Danh Sach
    int removeTail (List &l)
    {
    		Node *k;
            if(l.pTail==NULL)
                    return 0;
            else 
            {for(k=l.pHead;k->pNext!=l.pTail;)
                    k=k->pNext;
            k->pNext=NULL;
            l.pTail=k;
            return 3;
            } 
      
    }
    //Xoa Node Sau Q
    int removeAfter (List &l, Node *q )
    {
    	if (q !=NULL && q->pNext !=NULL)
    	{
    		Node*   p = q->pNext;
    		q->pNext = p->pNext;
    		if  (p==l.pTail)	 l.pTail = q;
    		delete p;
    		return 1;
    	}
    	else return 0;
    }
    //Xoa Phan Tu co Tu Khoa Xoa
    int removeNode  (List &l, int n) 
    {	
    	Node *p=l.pHead;
    	Node *q=NULL;
    	while(p!=NULL) 
    	{ 
    		if  (p->data==n) 
    		break; 
    		q = p;    
    		p = p->pNext; 
    	} 
    	if (p==NULL)  
    	{ 
    		cout<<"Khong Tim Thay n"; return 0;
    	}
    	else if (q == NULL) 
    			removeHead(l);
    		else 
    			removeAfter(l,q);
    } 
    //Xoa Toan Bo Danh Sach
    void RemoveList (List &l)
    {	
    	Node	*p;
    	while (l.pHead != NULL) 
    	{
    		p = l.pHead;
    		l.pHead = p->pNext;
    	   delete p;
    	}
    	l.pTail = NULL;
    }
    // Tim Kiem Node
    Node* Search (List  l, int  x)
    {
    	Node* p = l.pHead;
    	while (p!=NULL) 
    	{ 
    		if (p->data==x)
    		{
      		cout<<"Tim Thay "<<x<<" trong danh sach"<<endl;
      		break;
    		}
      		else
      		cout<<"khong Tim Thay "<<x<<" trong danh sach"<<endl;
    		p=p->pNext;
    	}
    	return NULL;
    }
    //Dem So Node
    int CountNodes (List l)
    {
    	int count = 0;
    	Node *p = l.pHead;
    	while (p!=NULL)
    	{
    		count++;
    		p = p->pNext;
    	}
    	return count;
    }
    //Ham Swap
    void Swap(int &a,int &b)
    {
    		int temp;
    		temp=a;
    		a=b;
    		b=temp;
    }
    //InterChangeSort
    void   InterChangeSort (List &l)
    {
    	for (Node *p=l.pHead ; p!=l.pTail ; p=p->pNext)
    		for (Node *q=p->pNext ; q!=NULL ; q=q->pNext )
    			if ( p->data > q->data )
    				Swap(p->data,q->data);
    } 
    
    //ham kiem tra
    Node*Kiemtra(List &l,int data)
    {
    	Node*temp=l.pHead;
    	while(temp!=NULL&&temp->data!=data)
    		temp=temp->pNext;
    	return temp;
    }
    
    //Ham Xuat Node
    void XuatLK(List l)
    {
    	Node *p=l.pHead;
    	while(p!=NULL)
    	{
    		cout<<p->data<<" ";
    		p=p->pNext;
    	}
    }
    //Ham main
    int main()
    {
    	int data,chon,x,k,n;
    	List l;
    	Init(l);
    	do
    	{	cout<<"1:Them Dau"<<endl;
    		cout<<"2:Them Cuoi"<<endl;
    		cout<<"3:Them Sau Node Q"<<endl;
    		cout<<"4:Xoa Dau"<<endl;
    		cout<<"5:Xoa Cuoi"<<endl;
    		cout<<"6:Xoa Sau Node Q"<<endl;
    		cout<<"7:Xoa Node Tim Kiem Theo khoa"<<endl;
    		cout<<"8:Xoa Toan Bo Danh Sach"<<endl;
    		cout<<"9:Xuat Toan Bo Danh Sach"<<endl;
    		cout<<"10:Tim Kiem Node"<<endl;
    		cout<<"11:Dem So Node"<<endl;
    		cout<<"12:Sap Sep Danh Sach"<<endl;
    		cout<<"Nhap Chon"<<endl;	
    		cin>>chon;
    		switch(chon)
    		{
    			case 1:
    			cout<<"Nhap So Lan Can Nhap";cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Node=";cin>>x;
    				cout<<endl;
    				Node *p=getNode(x);
    			    addHead(l,p);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;	
    			
    			case 2:
    			cout<<"Nhap So Lan Can Nhap";cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Node=";cin>>x;
    				cout<<endl;
    				Node *p=getNode(x);
    				addTail(l,p);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 3:
    			cout<<"nhap So Lan Can Nhap"<<endl;
    			cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Nhap so can chen: ";cin>>x;
    				cout<<"Chen sau so: ";cin>>data;
    				Node*p=getNode(x);
    				Node*q=Kiemtra(l,data);
    				addAfter(l,q,p);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 4:
    			cout<<"Nhap So Lan Can xoa";cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				removeHead(l);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 5:
    			cout<<"Nhap So Lan Can xoa";cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				removeTail(l);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 6:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    			cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Xoa sau so: ";cin>>data;
    				Node*q=Kiemtra(l,data);
    				removeAfter(l,q);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 7:
    			cout<<"nhap So Lan Can Xoa"<<endl;
    			cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Nhap Node Can Xoa: ";cin>>n;
    				removeNode(l,n);
    			}
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 8:
    			RemoveList(l);
    			break;
    			
    			case 9:
    			XuatLK(l);
    			cout<<endl;
    			break;
    			
    			case 10:
    			cout<<"nhap So Lan Can Tim"<<endl;
    			cin>>k;
    			for(int i=0;i<k;i++)
    			{
    				cout<<"Nhap So Can Tim: ";cin>>x;
    				Search(l,x);
    			}
    			break;
    			
    			case 11:
    			cout<<"Toan Bo Danh Sach Co "<<CountNodes(l)<<" Node "<<endl ;	
    			break;
    			
    			case 12:
    			cout<<"Danh Sach Sau Khi Sap Sep La"<<endl;
    			InterChangeSort(l);
    			XuatLK(l);
    			cout<<endl;
    			break;		
    		}
    	}
    	while(chon!=-1);
    }
    Đã được chỉnh sửa lần cuối bởi truongtanphuse : 19-03-2012 lúc 09:08 PM.

Các đề tài tương tự

  1. Mã nguồn C Lỗi Cần giúp sửa lỗi code liên quan đến class
    Gửi bởi dangtapta trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 26-11-2013, 12:18 AM
  2. giúp mình đoạn code về danh sách liên kết này với
    Gửi bởi thienbk89 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 16-07-2012, 12:37 PM
  3. Code về cài đặt cây tổng quát bằng danh sách liên kết. Giúp mình?
    Gửi bởi linhan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 16-11-2010, 04:40 PM
  4. Test giúp code danh sách liên kết
    Gửi bởi arikawoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 21-09-2010, 04:54 PM
  5. giúp viết code cho chương trình danh sách liên kết
    Gửi bởi tienrau trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 27-04-2010, 10:21 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn