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

Đề tài: Danh sách liên kết | Chèn vào đầu, và chèn vào cuối DSLK trên C???

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

    Mặc định Danh sách liên kết | Chèn vào đầu, và chèn vào cuối DSLK trên C???

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<iostream.h>
    typedef struct Node
    {	int data;
    	Node *next;
    }Node;
    typedef Node *pNode;
    typedef struct list
    {	pNode head,tail;
    };
    void KhoiTao(list &l)
    {	l.head=l.tail=NULL;
    }
    pNode TaoNut(int x)
    {	pNode p=new Node;
    	if(p!=NULL)
    	{	p->data=x;
    		p->next=NULL;
    	}
    	return p;
    }
    void AddLast(list &l,pNode p)
    {
    	if(l.head==NULL)
    		l.head=l.tail=p;
    	else
    	{	l.tail->next=p;
    		l.tail=p;
    	}
    }
    void ChenDau(list &l,int x)
    {	pNode p=TaoNut(x);
    	if(p==NULL)
    	{	cout<<"Ko thuc hien dc";
    		return;
    	}
    	else
    		AddLast(l,p);
    }
    void In(list l)
    {	pNode p=l.head;
    	while(p!=NULL)
    	{	cout<<p->data<<"-->";
    		p=p->next;
    	}
    	cout<<"NULL"<<endl;
    }
    void Input(list &l)
    {	int x;
    	do
    	{	cout<<"Nhap x=";
    		cin>>x;
    		if(x!=0)
    			ChenDau(l,x);
    	}while(x!=0);
    }
    pNode isEmpty(list &l)
    {	return (l.head=NULL);
    }
    int ChenCuoi(list l,int x)
    {	pNode p=TaoNut(x);
    	if(p==NULL)
    		return 0;
    	if(isEmpty(l))
    	{	l.head=l.tail=p;
    		return 1;
    	}
    	l.tail->next=p;
    	l.tail=p;
    	return 1;
    }
    int ChenDau1(list &l,int x)
    {	pNode p=new Node;
    	p->data=x;p->next=NULL;
    	if(p==NULL)
    		return 0;
    	if(isEmpty(l))
    	{	l.head=l.tail=p;
    		return 1;
    	}
    	p->next=l.head;
    	l.head=p;
    	return 1;
    }
    void main()
    {	list l;
    	int chon;
    	clrscr();
    	KhoiTao(l);
    	Input(l);
    	do
    	{     		
    		cout<<"1.In:<<endl;
    		Cout<<"2.Chen Cuoi"<<endl;
    		cout<<"3.Chen Dau"<<endl;
    		cin>>chon;
    		switch(chon)
    		{	case 1:
    			{	In(l);   break;
    			}
    			case 2:
    			{	int x;
    				cout<<"Moi nhap so can chen=";
    				cin>>x;
    				if(ChenCuoi(l,x)==1)
    					cout<<"Chen thanh cong"<<endl;
    				else
    					cout<<"That bai"<<endl;
    				break;
    			}
    			case 3:
    			{	int x;
    				cout<<"Moi nhap so can chen=";
    				cin>>x;
    				if(ChenDau1(l,x)==1)
    					cout<<"Chen thanh cong"<<endl;
    				else
    					cout<<"Chen That bai"<<endl;
    				break;
    			}
    		}
    	}while(chon!=0);
    }
    Ai chỉ dùm mình với code nó sẻ chạy như sau mới vào bạn sẽ nhập phần tử của dslk nhập số 0 để dừng bấm số 1 đễ In dslk,số 2 để chèn cuối,số 3 để chèn đầu chèn cuối thì ko có gì còn chèn đầu thì nó thông báo thành công mà ko chèn gì còn 1 điều nữa chổ hàm int ChenCuoi(list l,int x) nếu thêm & vào list &l thì sẽ chạy sai nhập số để chèn thì nó vẫn báo thành công mà in thì ra NULL hàm ChenDau1 thì cũng thông báo chèn thành công mà lúc in ra nó tự làm 1 dslk mới số vừa chèn ->NULL trong khi code của ông thầy dạy là có dấu & ai giúp mình tìm chỗ sai giùm với

  2. #2
    Ngày gia nhập
    05 2009
    Bài viết
    6

    Mới nhìn qua thì mình có góp ý này. cái hàm " Cout " mà " viết hoa như vậy đem về máy chạy mới lạ. Bạn nào copy về giải nhớ để ý chuyện đó.Máy sẽ báo lỗi đó.

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

    ah cái đó mình thêm vô lúc post lên để mọi người dễ hiểu thôi nên có chút sai sót chứ code thì chạy thì ổn hết mà nó ko thực hiện thôi
    Còn 1 cái nữa hàm ChenDau dưới hàm AddLast mình ghi sai đáng lẽ là hàm ChenCuoi mới đúng

  4. #4
    Ngày gia nhập
    03 2008
    Nơi ở
    Hồ chí minh
    Bài viết
    134

    Bài của sonas bị sai mấy lỗi sau:( mình đánh dấu trong code luôn đó )
    Còn cái dấu & sau khi sửa xong mình thêm vào chạy bình thường,có lỗi chi đâu bạn.
    C Code:
    1. #include<stdafx.h>
    2. #include<stdio.h>
    3. #include<conio.h>
    4. #include<iostream>
    5. using namespace std;
    6. typedef struct Node
    7. {   int data;
    8.     Node *next;
    9. }Node;
    10. typedef Node *pNode;
    11. typedef struct list
    12. {   pNode head,tail;
    13. };
    14. void KhoiTao(list &l)
    15. {   l.head=l.tail=NULL;
    16. }
    17. pNode TaoNut(int x)
    18. {   pNode p=new Node;
    19.     if(p!=NULL)
    20.     {   p->data=x;
    21.         p->next=NULL;
    22.     }
    23.     return p;
    24. }
    25. void AddLast(list &l,pNode p)
    26. {
    27.     if(l.head==NULL)
    28.         l.head=l.tail=p;
    29.     else
    30.     {   l.tail->next=p;
    31.         l.tail=p;
    32.     }
    33. }
    34. void addfirst(list &l,pNode p)
    35. {
    36.         if(l.head==NULL)
    37.          l.head=l.tail=p;
    38.       else
    39.       {
    40.           p->next=l.head;
    41.           l.head->next=p;
    42.          
    43.       }
    44. }
    45. void ChenDau(list &l,int x)
    46. {   pNode p=TaoNut(x);
    47.     if(p==NULL)
    48.     {   cout<<"Ko thuc hien dc";
    49.         return;
    50.     }
    51.     else
    52.           AddLast(l,p);
    53.          
    54.     }
    55. void In(list &l)//bạn bị thiều dấu &,nên lúc thì chay bình thường còn lúc thì vòng lặp không kết thúc
    56. {   pNode p=l.head;
    57.     while(p!=NULL)
    58.     {   cout<<p->data<<"-->";
    59.         p=p->next;
    60.     }
    61.     cout<<"NULL"<<endl;
    62. }
    63. void Input(list &l)
    64. {   int x;
    65.     do
    66.     {   cout<<"Nhap x=";
    67.         cin>>x;
    68.         if(x!=0)
    69.             ChenDau(l,x);
    70.     }while(x!=0);
    71. }
    72. int isEMPTY(list &l)
    73. {   if(l.head==NULL)
    74.     return 1;
    75.    return 0;
    76. }
    77. pNode isEmpty(list &l)
    78. {   return (l.head=NULL);
    79. }//muốn kiểm tra rỗng hay không thì cũng phải có điều kiện.
    80.                        
    81. }
    82. int ChenCuoi(list &l,int x)
    83. {   pNode p=TaoNut(x);
    84.     if(p==NULL)
    85.         return 0;
    86.     if(isEmpty(l))
    87.     {   l.head=l.tail=p;
    88.         return 1;
    89.     }
    90.     l.tail->next=p;
    91.     l.tail=p;
    92.     return 1;
    93. }
    94. int ChenDau1(list &l,int x)
    95. {   pNode p=new Node;
    96.     p->data=x;p->next=NULL;
    97.     if(p==NULL)
    98.         return 0;
    99.     if(isEMPTY(l))
    100.     {   l.head=l.tail=p;
    101.         return 1;
    102.     }
    103.     /* if(isEmpty(l))//KHI ko có isEMPTY(l) Ở trên thì tới đây nó hiểu là khác NULL,
    104.     NÊN THỰC HIỆN CÁC CÂU LỆNH TRONG NÀY LUÔN
    105.     {   l.head=l.tail=p;
    106.         return 1;
    107.     }*/
    108.     p->next=l.head;
    109.     l.head=p;
    110.     return 1;
    111. }
    112. void main()
    113. {   list l;
    114.     int chon;
    115.     //clrscr();
    116.     KhoiTao(l);
    117.     Input(l);
    118.     do
    119.     {          
    120.         cout<<"1.In:"<<endl;
    121.         cout<<"2.Chen Cuoi"<<endl;
    122.         cout<<"3.Chen Dau"<<endl;
    123.         cin>>chon;
    124.         switch(chon)
    125.         {   case 1:
    126.             {   In(l);   break;
    127.             }
    128.             case 2:
    129.             {   int x;
    130.                 cout<<"Moi nhap so can chen=";
    131.                 cin>>x;
    132.                 if(ChenCuoi(l,x)==1)
    133.                     cout<<"Chen thanh cong"<<endl;
    134.                 else
    135.                     cout<<"That bai"<<endl;
    136.                 break;
    137.             }
    138.             case 3:
    139.             {   int x;
    140.                 cout<<"Moi nhap so can chen=";
    141.                 cin>>x;
    142.                 if(ChenDau1(l,x)==1)
    143.                     cout<<"Chen thanh cong"<<endl;
    144.                 else
    145.                     cout<<"Chen That bai"<<endl;
    146.                 break;
    147.             }
    148.         }
    149.     }while(chon!=0);
    150. }
    Every step I'm taking
    Every move I make
    Feels lost with no direction
    My faith is shaking
    But I gotta keep trying.

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

    cám ơn bạn nhiều giờ mình hiểu mình sai chỗ nào rồi

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

  1. Bài tập C Tạo danh sách liên kết các số nguyên tố từ danh sách L (dslk đơn)
    Gửi bởi pato24193 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: 16-12-2012, 02:47 PM
  2. DSLK trên C. Chèn và xóa phần tử của danh sách. Sửa lỗi giúp mình!
    Gửi bởi doanloc0001 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: 08-01-2010, 05:26 PM
  3. DSLK | Danh sách liên kết trên C| Xoá phần tử ở sau phần tử q
    Gửi bởi 7261819 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 24-06-2009, 05:48 AM
  4. Sắp Xếp danh sách liên kết (DSLK) từ lớn đến nhỏ như thế nào?
    Gửi bởi Nemo_wf 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: 08-10-2008, 11:45 AM
  5. Danh sách liên kết. Giúp mình bài về DSLK!
    Gửi bởi thangtcnb trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 20-12-2007, 08:27 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