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

Đề tài: Tách 1 DSLK thành 2 DSLK

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

    Red face Tách 1 DSLK thành 2 DSLK

    Code:
      #include<stdio.h>
      #include<conio.h>
      typedef int  datatype;
      typedef struct Node
      {
        datatype info;
        Node  *next;
      };
      typedef Node * Nodeptr;
      typedef struct
      {
       Nodeptr pHead,pTail;
      }List;
      void createList(List &l)
      {
          l.pHead=l.pTail=NULL;
    
      }
      Nodeptr GetNode(datatype x)
    
      {
    
       Nodeptr p;
       p= new Node;
       p->info=x;
       p->next=NULL;
       return p;
    
      }
      void AddList(List &l,datatype x)
      {
          Nodeptr p;
          p=GetNode(x);
          if(l.pHead==NULL)
    	 l.pHead =p;
          else
    	 l.pTail->next=p;
    	 l.pTail=p;
    
      }
      void InList(List &l)
      {
         datatype x ;
         createList(l);
         do
           {
    	 scanf("%d",&x);
    	 if(x)
    	   AddList(l,x);
           }
           while(x);
       }
       void OutList(List &l)
       {
          Nodeptr c;
          c=l.pHead;
          while(c!=NULL)
    	{
    	  printf("%4d",c->info);
    	  c=c->next;
    	}
       }
       void splitList(List &l,List &l1,List&l2)
    
       {
    	 Node t1,t2;
    	 l1.pHead=l1.pTail=new Node;
    	 l2.pHead=l2.pTail= new Node;
    	 while(l.pHead!=NULL)
    	 {
    	    if(l.pHead ->info%2==0)
    	       {
    		  l2.pTail->next=l.pTail;
    		  l2.pTail=l.pTail->next;
    	       }
    		  else
    		    {
    		      l1.pTail->next=l.pHead;
    		      l1.pTail=l.pTail->next;
    		    }
    	    l.pHead =l.pHead->next;
    	    l1.pTail->next=l2.pTail->next=NULL;
    	    t1=l1.pHead;
    	    l1.pHead=t1->next;
    	    delete t1;
    	    t2=l2.pHead;
    	    l2.pHead=t2->next;
    	    delete t2;
          }
    
       }
    
    
      void main()
      {
    
        int pHaid,pTail;
        List l,l1,l2;
        clrscr();
        printf("Nhap DSLK:\n");
        InList(l);
        printf("Xuat DSLK:\n");
        printf("Tach DSLK:\n");
        splitList(l,l1,l2);
        OutList(l);
        getch();
       }
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi dangluongC : 08-04-2009 lúc 11:38 PM.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Code đính kèm không phải bài đó, bạn xem lại đi nhé!

    Code:
    void splitList(List &l,List &l1,List&l2)
    
    {
    Node t1,t2;
    l1.pHead=l1.pTail=new Node;
    l2.pHead=l2.pTail= new Node;
    Đọc đoạn đầu đã không hiểu bạn.

    Câu hỏi đặt ra là kiểu List và kiểu Node của bạn có khác nhau không? Nếu một cái là con trỏ một cái không thì cái nào là con trỏ?

    - Nếu List là kiểu con trỏ thì sao viết đc thế này l1.pHead (sai lý thuyết có thể là l1->pHead), Node là con trỏ thì không dùng để cấp phát.

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

  1. Lỗi xóa DSLK sau khi xử lí DSLK trong hàm.
    Gửi bởi darkboys trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 01-05-2013, 01:24 AM
  2. Chèn 1 node vào DSLK đôi (tăng dần ) để được 1 DSLK đôi ( tăng dần ) ?
    Gửi bởi phanxuanbanglhu trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 2
    Bài viết cuối: 29-11-2011, 03:11 PM
  3. Chuyển từ DSLK đơn sang DSLK kép
    Gửi bởi thaihoa91 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 04-05-2011, 07:47 PM
  4. Code cài đặt DSLK đơn vòng và kép vòng trên C++. Thêm 1 phần tử sau 1 phần tử trong DSLK đơn/kép
    Gửi bởi hoanghieu.fit.hcmus trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 09-04-2011, 02:54 PM
  5. Hỏi tí về DSLK
    Gửi bởi manutd1988 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 24-11-2007, 02:52 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