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

Đề tài: Gấp!!!Mong được giúp đở về vấn đề về tách DSLK Đơn

  1. #1
    Ngày gia nhập
    12 2008
    Bài viết
    53

    Mặc định Gấp!!!Mong được giúp đở về vấn đề về tách DSLK Đơn

    Mình code bài tách danh Sách liên kết đơn l thành 2 danh sách l2 chẳn và l3 lẽ như sau. nhưng chạy không được Chỉ xuất ra l rồi báo lổi DeBug. mong được giúp đở. Xin cảm ơn

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<ctype.h>
    
    
    typedef int data;
    typedef struct tagNode
    {
    	data key;
    	struct tagNode* pNext;
    }Node;
    
    Node *TaoNode(data x=0)
    {
    	Node *p;
    	p = (Node*) new Node;
    	if(p==NULL)
    	{
    		printf("khong du bo nho cap phat");
    		getch();
    		return NULL;
    	}
    	p->key = x;
    	p->pNext = NULL;
    	return p;
    }
    
    ///////////////////////////////////////////
    typedef struct tagList
    {
    	Node *pHead;
    	Node *pTail;
    }List;
    void TaoList(List &l,int n)
    {
    	data x;
    	Node *q;
    	l.pHead=l.pTail=NULL;
    	for(int i=1;i<=n;i++)
    	{
    		printf("nhap phan tu thu %d la:",i);
    		scanf("%d",&x);
    		q=TaoNode(x);
    		if(q==NULL)
    		{
    			printf("khong du bo nho cap phat");
    			getch();
    			return;
    		}
    		if(l.pHead==NULL)
    			l.pHead=l.pTail=q;
    		else
    		{
    			l.pTail->pNext=q;
    			l.pTail=q;
    		}
    	}
    }
    void InList(List l)
    {
    	Node *p;
    	p = l.pHead;
    	while(p)
    	{
    	printf("%d \t",p->key);
    		p = p->pNext;
    	}
    	getch();
    
    }void Init(List &l)
    {
    	l.pHead = NULL;
    	l.pTail = NULL;
    }
    void AddTail(List &l,Node *p)
    {
    	if(l.pHead = NULL)
    		l.pHead=l.pTail = p;
    	else
    	{
    		l.pTail->pNext= p;
    		l.pTail = p;
    	}
    }
    Node* GetHead(List &l)
    {
    	if(l.pHead = NULL)
    		return NULL;
    	if(l.pHead = l.pTail)
    	{
    		Node *p = l.pHead;
    		l.pHead = l.pTail = NULL;
    		return p;
    	}
    	Node* p = l.pHead;
    	l.pHead = l.pHead->pNext;
    	p->pNext = NULL;
    	return p;
    
    }
    void Split(List &l,List &l2,List &l3)
    {
    	Init(l3);
    	Init(l2);
    	for(Node*p = l.pHead;p!=NULL;p=p->pNext)
    	{
    		p = GetHead(l);
    		if(p->key%2 == 0)
    			AddTail(l2,p);
    		else
    		AddTail(l3,p);
    	
    	}
    }
    
    void main()
    {
    	
    	List l;
    	List l2;
    	List l3;
            int n;
    	printf("nhap n: ");
    	scanf("%d",&n);
    	TaoList(l,n);
    	InList(l);
    	Split(l,l2,l3);
            InList(l2);
    	InList(l3);
    }
    Giấc mơ con đè nát cuộc đời con..
    void main(){
    string myWish={"Vợ","Con","Hầm","Bánh","Lầu","Múi (Cơ bụng)"};
    for( int i = 1 ; i<=6; i++){
    printf("%d %s ",i,myWish[i-1]); }}

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    11

    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. struct Node
    5. {
    6.     int key;
    7.     Node* pNext;
    8.     Node()
    9.     {
    10.         pNext = NULL;
    11.     }
    12. };
    13.  
    14. struct List
    15. {
    16.     Node* pHead;
    17.     Node* pTail;
    18.     List()
    19.     {
    20.         pHead = pTail = NULL;
    21.     }
    22. };
    23.  
    24. Node* GetNode(int x)
    25. {
    26.     Node* p = new Node;
    27.     if(p==NULL)
    28.         return NULL;
    29.     p->key = x;
    30.     p->pNext = NULL;
    31.     return p;
    32. }
    33.  
    34. void InsertTail(List &l, int x)
    35. {
    36.     Node* p = GetNode(x);
    37.     if(l.pHead == NULL)
    38.     {
    39.         l.pHead = l.pTail = p;
    40.     }
    41.     l.pTail->pNext = p;
    42.     l.pTail = p;
    43. }
    44.  
    45. void DisplayList(List l)
    46. {
    47.     Node* p = l.pHead;
    48.     while(p!=NULL)
    49.     {
    50.         cout << p->key << " ";
    51.         p = p->pNext;
    52.     }
    53.     cout << endl;
    54. }
    55.  
    56. void SplitList(List& l, List& l1, List& l2)
    57. {
    58.     Node* p = l.pHead;
    59.     while(p!=NULL)
    60.     {
    61.         if(p->key % 2)
    62.             InsertTail(l1,p->key);
    63.         else InsertTail(l2,p->key);
    64.         p = p->pNext;
    65.     }
    66. }
    67.  
    68. void main()
    69. {
    70.     List l;
    71.     List l1,l2;
    72.     for(int i=1;i<=10;i++)
    73.         InsertTail(l,i);
    74.     DisplayList(l);
    75.     SplitList(l,l1,l2);
    76.     DisplayList(l1);
    77.     DisplayList(l2);
    78. }
    Đây là code của mình.
    Code của bạn mình debug thử thì hàm AddTail có vấn đề, bạn xem lại nhé...

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

  1. Lập trình C Mọi người giúp e về DSLK kép với
    Gửi bởi thanhanh1993 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 07-01-2013, 09:54 AM
  2. Lập trình C++ cần giúp về DSLK
    Gửi bởi mr.cuong_tq trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 20-06-2012, 09:51 PM
  3. thật toán trôn hai DSLK. Mọi người giúp với
    Gửi bởi nguoirung1.6 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 05-12-2010, 04:22 AM
  4. Cần các pác giúp DSLK
    Gửi bởi nguyenthuancn2 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: 30-06-2009, 11:12 AM
  5. [ Solved ]Sử dụng DSLK đơn để cài đặt đa thức. Mong các bạn chỉ gium. cám ơn
    Gửi bởi laptrinhvien_1988 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: 09-10-2008, 12:43 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