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

Đề tài: Lỗi xuất danh sách liên kết đơn theo con trỏ cuối danh sách

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

    Mặc định Lỗi xuất danh sách liên kết đơn theo con trỏ cuối danh sách

    Bài này mình chạy không được Hàm PRINTLISTTAIL(l);
    giúp mình sửa bài này với, cảm ơn
    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. struct NODE//cau truc mot node trong danh sach lien ket doi
    4. {
    5.     int DATA;
    6.     NODE* Pnext;
    7.     NODE* Pprev;
    8. };
    9. struct LIST
    10. {
    11.     NODE* Phead;
    12.     NODE* Ptail;
    13. };
    14. NODE* CREATENODE(int x)
    15. {
    16.     NODE* p = new NODE();//cap phat vung nho cho node p
    17.     p->DATA = x;
    18.     p->Pnext = NULL;
    19.     p->Pprev = NULL;
    20.     return p;
    21. }
    22. void ADDHEAD(LIST &l,NODE* p)
    23. {
    24.     if(l.Phead == NULL&&l.Ptail == NULL)
    25.     {
    26.         l.Phead = l.Ptail = p;
    27.     }
    28.     else
    29.     {
    30.         p->Pnext = l.Phead;
    31.         p->Pprev = NULL;
    32.         l.Phead = p;
    33.     }
    34. }
    35. void PRINTLISTTAIL(LIST l)//in danh sach lien ket doi dua theo con tro cuoi danh sach
    36. {
    37.     for(;l.Ptail != NULL;l.Ptail = l.Ptail->Pprev)
    38.     {
    39.         printf("%d\t", l.Ptail->DATA);
    40.     }
    41.  
    42. }
    43.    
    44. int main()
    45. {
    46.     LIST l;
    47.     l.Phead = l.Ptail = NULL ;
    48.     NODE* p;
    49.     int n;
    50.     do
    51.     {
    52.         printf("\nNhap -1 de ket thuc viec nhap,Nhap gia tri cua node muon them : ");
    53.         scanf("%d",&n);
    54.         if(n==-1)
    55.         {
    56.             break;
    57.         }
    58.         p=CREATENODE(n);
    59.         ADDHEAD(l,p);      
    60.     }while(-1);
    61.  
    62.     PRINTLISTTAIL(l);//minh khong the thuc hien duoc lenh nay
    63.     _getch();
    64.     return 0;
    65. }

  2. #2
    Ngày gia nhập
    04 2012
    Bài viết
    42

    Trước khi bắt tay vào làm bài tập. Bạn nên xem kĩ lại lý thuyết. Mình nghĩ nên vẽ mô hình ra giấy sẽ dễ hình dung hơn.

    C Code:
    1. int addAtHead(LIST &l, NODE *new_item)
    2. {
    3.     if(new_item==NULL) return 0;
    4.     if(l.Phead==NULL)
    5.         l.Phead=l.Ptail=new_item;
    6.     else
    7.     {
    8.         new_item->Pnext = l.Phead;
    9.         l.Phead->Pprev  = new_item;
    10.         l.Phead         = new_item;
    11.     }
    12.     return 1;
    13. }
    C Code:
    1. while (!silly)
    2.     cout<<"Study everything !";

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

    Wink MÌnh Sửa lại hàm add head như bạn rồi nhưng vẫn bị lỗi

    Code:
    #include<stdio.h>
    #include<conio.h>
    struct NODE
    {
    	int DATA;
    	NODE* Pnext;
    	NODE* Pprev;
    };
    struct LIST
    {
    	NODE* Phead;
    	NODE* Ptail;
    };
    NODE* CREATENODE(int x)
    {
    	NODE* p = new NODE();//cap phat vung nho cho node p
    	p->DATA = x;
    	p->Pnext = NULL;
    	p->Pprev = NULL;
    	return p;
    }
    void ADDHEAD(LIST &l,NODE* p)
    {
    	if(l.Phead == NULL)
    	{
    		l.Phead = l.Ptail = p;
    	}
    	else
    	{
    		p->Pnext = l.Phead;
    		l.Phead->Pprev = p;
    		l.Phead = p;
    	}
    }
    void PRINTLISTHEAD(LIST l)//in theo con tro dau danh sach
    {
    	for(;l.Phead!=NULL;l.Phead=l.Phead->Pnext)
    	{
    		printf("%d\t",l.Phead->DATA);
    	}
    }
    void PRINTLISTTAIL(LIST l)//in theo con tro cuoi danh sach
    {
    	for(;l.Ptail != NULL;l.Ptail = l.Ptail->Pprev)
    	{
    		printf("%d\t", l.Ptail->DATA);
    	}
    
    }
    	
    int main()
    {
    	LIST l;
    	l.Phead = l.Ptail = NULL ;
    	NODE* p;
    	int n;
    	do
    	{
    		printf("\nNhap -1 de ket thuc viec nhap,Nhap gia tri cua node muon them : ");
    		scanf("%d",&n);
    		if(n==-1)
    		{
    			break;
    		}
    		p=CREATENODE(n);
    		ADDHEAD(l,p);		
    	}while(-1);
    	PRINTLISTHEAD(l);
    	PRINTLISTTAIL(l);
    	_getch();
    	return 0;
    }

  4. #4
    Ngày gia nhập
    02 2010
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi thienthanoze1 Xem bài viết
    Code:
    #include<stdio.h>
    #include<conio.h>
    struct NODE
    {
    	int DATA;
    	NODE* Pnext;
    	NODE* Pprev;
    };
    struct LIST
    {
    	NODE* Phead;
    	NODE* Ptail;
    };
    NODE* CREATENODE(int x)
    {
    	NODE* p = new NODE();//cap phat vung nho cho node p
    	p->DATA = x;
    	p->Pnext = NULL;
    	p->Pprev = NULL;
    	return p;
    }
    void ADDHEAD(LIST &l,NODE* p)
    {
    	if(l.Phead == NULL)
    	{
    		l.Phead = l.Ptail = p;
    	}
    	else
    	{
    		p->Pnext = l.Phead;
    		l.Phead->Pprev = p;
    		l.Phead = p;
    	}
    }
    void PRINTLISTHEAD(LIST l)//in theo con tro dau danh sach
    {
    	for(;l.Phead!=NULL;l.Phead=l.Phead->Pnext)
    	{
    		printf("%d\t",l.Phead->DATA);
    	}
    }
    void PRINTLISTTAIL(LIST l)//in theo con tro cuoi danh sach
    {
    	for(;l.Ptail != NULL;l.Ptail = l.Ptail->Pprev)
    	{
    		printf("%d\t", l.Ptail->DATA);
    	}
    
    }
    	
    int main()
    {
    	LIST l;
    	l.Phead = l.Ptail = NULL ;
    	NODE* p;
    	int n;
    	do
    	{
    		printf("\nNhap -1 de ket thuc viec nhap,Nhap gia tri cua node muon them : ");
    		scanf("%d",&n);
    		if(n==-1)
    		{
    			break;
    		}
    		p=CREATENODE(n);
    		ADDHEAD(l,p);		
    	}while(-1);
    	PRINTLISTHEAD(l);
    	PRINTLISTTAIL(l);
    	_getch();
    	return 0;
    }
    bị gì là bị gì vậy anh??? em thấy bt mà...???

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Trích dẫn Nguyên bản được gửi bởi utkunglt Xem bài viết
    bị gì là bị gì vậy anh??? em thấy bt mà...???
    Em vẫn thiếu cái hàm hủy cấp phát động cho các nút mà anh, thêm cả cái kiểm tra NULL khi cấp phát bằng new phải ép về kiểu con trỏ mới thế được NODE* p = new(nothrow) NODE;
    Hay
    C++ Code:
    1. try {
    2.     NODE* p = new NODE;
    3.     }
    4. catch(std::bad_alloc &e)
    5. {
    6.    cerr<<"khong cap phat duoc bo nho!"<<e.what();
    7. }
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

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

  1. danh sách liên kết đơn xuất danh sách không được
    Gửi bởi cautrucdulieu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 30-03-2013, 08:01 AM
  2. Hướng dẫn Tạo danh sách liên kết kép theo hướng lập trình hướng đối tượng
    Gửi bởi beautifulsoul84hung trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 1
    Bài viết cuối: 22-11-2011, 07:29 PM
  3. Nhập và xuất danh sách liên kết lồng danh sách liên kết?
    Gửi bởi nvluong_it trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-04-2011, 11:30 AM
  4. Bài tập C++ Nhập xuất danh sách liên kết với lập trình C++, lúc nào cũng ra danh sách rỗng?
    Gửi bởi Le thi Ngoc Lan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 24-01-2011, 12:37 PM
  5. Nhập xuất danh sách bằng Danh Sách Liên Kết như thế nào?
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 10-12-2010, 10:16 AM

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