Announcement

Collapse
No announcement yet.

Cau Truc Du Lieu.. Help!!!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Cau Truc Du Lieu.. Help!!!

    ai giup em cai... sao chuong trinh nay chi xoa duoc cai dau va cai cuoi thoi z.. con lai may cai kia thi no khong co xoa.... mog giup do..tks truoc


    Code:
    #include<iostream>
    #include<stdlib.h>
    #include<stdio.h>
    using namespace std;
    typedef struct SinhVien
    {
    	float DiemTB;
    	string HoTen,MSSV;
    	struct SinhVien* next;
    }SV;
    
    typedef struct 
    {
    	struct SinhVien*head,*tail;
    }list;
    
    void khoitao(list &l)
    {
    	l.head=NULL;
    	l.tail=NULL;
    }
    void addtail(list &l,SV *p)
    {
    	if(l.head==NULL)
    	{
    		l.head=p;
    		l.tail=p;
    	}
    	else
    	{
    		l.tail->next=p;
    		l.tail=p;
    	}
    }
    SV* create(string _MSSV, string _HoTen, float _DiemTB)
    {
    	SV *p;
    	p=new SV;
    	p->MSSV=_MSSV;
    	p->HoTen=_HoTen;
    	p->DiemTB=_DiemTB;
    	p->next=NULL;
    	return p;	
    }
    void printlist(list l)
    {
    	SV *p;
    	p=l.head;
    	for(;p!=NULL;p=p->next)
    		cout<<"MSSV: "<<p->MSSV<<endl<<"Ho Ten: "<<p->HoTen<<endl<<"Diem TB: "<<p->DiemTB<<endl;
    }
    
    void xoahead(list &l)
    {
    	SV *p;
    	if(l.head==NULL) return;
    	else
    	{
    		if(l.head==l.tail)
    		{
    			p=l.head;
    			delete p;
    			l.head=NULL;
    			l.tail=NULL;
    		}
    		p=l.head->next;
    		delete l.head;
    		l.head=p;
    	}
    }
    void xoasv(list& l,string _MSSV)
    {
    	int i=0;
    	SV *p,*p1,*p2;
    	p=l.head;
    	if((l.head == l.tail) && (l.head->MSSV == _MSSV))
    	{
    		i=1;
    		l.head=NULL;
    		l.tail=NULL;
    		delete p;
    	}
    	else
    	{
    		if(p->MSSV == _MSSV) 
    		{
    			xoahead(l);
    			i=1;
    		}
    		else 
    		{
    			for(;p!=NULL;p=p->next)
    			{
    				if(p->next->MSSV == _MSSV)
    				{
    					i=1;
    					p1=p->next;
    					if(p1==l.tail)
    						l.tail=p;
    					p->next=p1->next;
    					delete p1;
    					
    				}
    			}
    		}
    	}
    	
    	if(i) 
    	{
    		cout<<"da xoa. danh sach con lai la: "<<endl;
    		printlist(l);
    	}
    	else cout<<"MSSV nhap tim khong thay"<<endl;
    }
    int main()
    {
    	list l;
    	SV *p;
    	khoitao(l);
    	string MSSV,HoTen;
    	int i,n;
    	float DiemTB;
    	cout<<"so luong sinh vien: "<<endl;
    	cin>>n;
    	for(i=0;i<n;i++)
    	{
    		cout<<"MSSV: ";
    		fflush(stdin);
    		getline(cin,MSSV);
    		fflush(stdin);
    		cout<<"Ho Ten: ";
    		getline(cin,HoTen);
    		fflush(stdin);
    		cout<<"Diem TB: ";
    		cin>>DiemTB;
    		p=create(MSSV,HoTen,DiemTB);
    		addtail(l,p);
    		
    	}
    	cout<<"nhap MSSV can xoa: "; cin>>MSSV;
    	xoasv(l,MSSV);
    	
    }

  • #2
    Nếu lỗi cú pháp thì lúc compile đã hiện ra, nếu chạy ko như mong muốn thì debug coi sai chỗ nào, cứ quăng code lên hỏi chung chung vậy

    Comment


    • #3
      Originally posted by 13520692 View Post
      ai giup em cai... sao chuong trinh nay chi xoa duoc cai dau va cai cuoi thoi z.. con lai may cai kia thi no khong co xoa.... mog giup do..tks truoc
      Code:
      #include<iostream>
      #include<conio.h>   
      #include<string.h>                             
      using namespace std; 
      
      typedef struct SinhVien
      {
      	float DiemTB;
      	char HoTen[20];
      	char MSSV[10];
      	struct SinhVien* Head;
      }SV;
      
      typedef struct 
      {
      	SV *Head, *Tail;
      }LIST;
      
      void KhoiTao(LIST &l)
      {
      	l.Head = NULL;
      	l.Tail = NULL;
      }
      
      void AddTail (LIST &l,SV *p)
      {
      	if (l.Head == NULL)
      	{
      		l.Head = p;
      		l.Tail = p;
      	}
      	else
      	{
      		l.Tail->Head = p;
      		l.Tail = p;
      	}
      }
      
      SV* create(char _MSSV[10], char _HoTen[20], float _DiemTB)
      {
      	SV *p;
      	p = new SV;
      	strcpy(p->MSSV,_MSSV);
      	strcpy(p->HoTen,_HoTen);
      	p->DiemTB = _DiemTB;
      	p->Head = NULL;
      	return p;	
      }
      
      void PrintList(LIST& l)
      {
      	SV *p;
      	p = l.Head;
      	for (; p!=NULL; p=p->Head)
      		cout << "\nMSSV: " << p->MSSV << endl
      		     << "Ho Ten: " << p->HoTen << endl
      		     << "Diem TB: " << p->DiemTB << endl;
      }
      
      int XoaSV(LIST& l,char _MSSV[10])
      {
      	SV *p = l.Head;
      	SV *q = NULL;
      	while (p != NULL)
      	{
      		if (strcmp(p->MSSV,_MSSV) == 0)
      			break;
      		q = p;
      		p = q->Head;
      	}
      	if(p == NULL) return 0;                 // Không tìm thấy MSSV
      	if(q!= NULL)
      	{
      		if(p==l.Tail)
      			l.Tail=q;
      		q->Head=p->Head;
      		delete p;
      	}
      	else                      
      	{
      		l.Head=p->Head;                        // p là phần tử đầu xâu
      		if(l.Head==NULL)
      			l.Tail=NULL;
      	}
      	return 1;
      }
      	
      int main()
      {
      	LIST l;
      	SV *p;
      	KhoiTao(l);
      	char MSSV[10];
      	char HoTen[20];
      	int i,n;
      	float DiemTB;
      
      	cout << "\nSo luong sinh vien: ";
      	cin >> n;
      
      	for (i = 0; i < n; i++)
      	{
      		cout<<"MSSV: ";
      		fflush(stdin);
      		cin.getline(MSSV,10);
      		
      		cout<<"Ho Ten: ";
      		fflush(stdin);
      		cin.getline(HoTen,20);
      		
      		cout<<"Diem TB: ";
      		cin>>DiemTB;
      
      		p=create(MSSV,HoTen,DiemTB);
      		cout << endl;
      		AddTail(l,p);
      	}
      
      	cout<<"\nNhap MSSV can xoa: "; 
      	fflush(stdin);
      	cin.getline(MSSV,10);
      	
      	if(XoaSV(l,MSSV)) 
      	{
      		cout << "\nDa xoa!";
      		cout << "\nDanh sach hien thoi: " << endl;
      		PrintList(l);
      	}
      	else
      	{
      		cout << "\nKhong ton tai MSSV vua nhap trong danh sach";
      		cout << "\nDanh sach hien thoi: " << endl;
      		PrintList(l);
      	}
      	
      	getch();                   
      	return 0;                  
      }
      Đọc code cậu khó hiểu, tớ làm riêng ra, cậu so sánh nhé. Thuật toán "Hủy 1 phần tử có khóa k" trong danh sách, cậu nên tham khảo sách trường mình hoặc slide của thầy/cô để viết cho ngắn gọn.
      I don't know the secret to success, but the secret to failure is trying to please everyone

      Comment


      • #4
        Nếu em làm theo đúng quy định thì câu hỏi của em sẽ được trả lời dễ dàng hơn và em sẽ không bị dính 1 sẹo.
        Originally posted by sinhvien.uit View Post
        Do dạo này các bạn năm nhất lập rất nhiều topic thắc mắc nhưng kỹ năng đặt câu hỏi rất yếu khiến nhiều topic khó có thể tìm câu trả lời nên ad viết nhanh một số quy tắc này để các bạn tham khảo. Từ bây giờ topic này lập ra mà không tuân thủ các quy tắc này có thể bị xóa kèm theo infraction không báo trước.

        0. Quy tắc tối thượng: Các mẫu câu: "Chạy không được", "Bị lỗi", "Có lỗi rồi", "Lỗi ở đâu đó", "chạy không ra", v.v... không được chấp nhận.

        1. Code phải để trong thẻ [PHP] hoặc thẻ [CODE]. Để cho đẹp hơn nữa có thể sử dụng các pastebin như http://pastebin.com/

        2. Khi nêu khúc mắc về một đoạn code phải nêu rõ đoạn code đó chủ đích được viết ra để làm gì. Giải quyết quyết bài toán hay minh họa vấn đề nào? Nếu bạn không phải là người viết code thì liên hệ hỏi người viết để biết, nếu chính người viết đoạn code cũng không biết nó dùng làm gì thì đoạn code đó
        nên bỏ đi, không đáng để thắc mắc.

        3. Nếu đoạn code có lỗi (compile time họăc runtime) phải nêu rõ hàng nào bị lỗi, nội dung thông báo lỗi, thông tin trình biên dịch. Chú ý quy tắc 0

        4. Nếu đoạn code không phát sinh error khi chạy, nhưng cho kết quả sai mục đích ban đầu thì phải mô tả rõ ứng với trường hợp dữ liệu nào sẽ cho kết quả sai, kết qủa mong muốn là gì và kết quả chương trình đưa ra là gì. Chú ý quy tắc 0

        Comment


        • #5
          q->Head=p->Head;
          delete p;
          else
          l.Head=p->Head; // p là phần tử đầu xâu

          Chổ này bị sai nè bạn!!

          Comment

          LHQC

          Collapse
          Working...
          X