Bạn xem lại chỗ này nè:
Node*p,*q;
p=new Node;
p->next=NULL;
p->gt=x;
p=*l;
if(p==NULL)
p=q;
Tại sao sau khi nhập các giá trị cho các node,tôi cho in ra vẫn báo danh sách rỗng?C++ Code:
#include <iostream.h> #include <iomanip.h> struct Node { int gt; Node*next; }; void makenull(Node**l) { *l=NULL; } void menu() { } void AddLinkeList(Node**l,int x) { Node*p,*q; p=new Node; p->next=NULL; p->gt=x; q=*l; if(q==NULL) q=p; else { while (q!=NULL) { q=q->next; } q=p; } } void display(Node **l) { Node *p; p=*l; if (p==NULL) { } else { while (p!=NULL) { p=p->next; } } } void main() { Node *p; int lc; int x; makenull(&p); do { menu(); switch(lc) { case 1: do { if(x!=-1) AddLinkeList(&p,x); } while(x!=-1); break; case 2: display(&p); break; }
Đã được chỉnh sửa lần cuối bởi dieucay555 : 04-03-2008 lúc 12:18 AM. Lý do: em gõ nhầm 2 biến p,q ở hàm AddLiskedList.Các bác thông cảm
Cánh Chym ứ mỏi
Bạn xem lại chỗ này nè:
Node*p,*q;
p=new Node;
p->next=NULL;
p->gt=x;
p=*l;
if(p==NULL)
p=q;
Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.
Cánh Chym ứ mỏi
Ko hiểu lắm chỗ bạn viết, nhưng mà có cảm giác là hình như nó ko chính xác, vì khi nó vừa đc khởi tạo xong và gán giá trị, chưa gì hết thì lại gán nó bằng 1 thằng khác , dĩ nhiên là giá trị cũ sẽ bị mất.
Hình như bạn viết nhầm, khi xem kĩ lại thấy giá trị q được khai báo nhưng ko đc new mà lại đem gán lung tung. Nó chưa báo Unhandle Exception là may. Có gì bạn nên comment vào những chỗ khó hiểu, sau này kiểm tra lại đỡ mệt hơn, nếu ko comment có khi chính mình viết ra còn ko biết nó là cái gì nữa
Xin lỗi bạn ,chỗ AddLinkedList tớ làm nhầm,code tớ sửa lại như sau:
Cái tớ thắc mắc là sao bây giờ hàm AddLinkList của tớ đã đúng rồi nhưng sao khi gọi hàm Display để in cái danh sách ra vẫn báo là danh sách rỗng?C++ Code:
#include <iostream.h> #include <iomanip.h> struct Node { int gt; Node*next; }; void makenull(Node**l) { *l=NULL; } void menu() { } void AddLinkeList(Node**l,int x) { Node*p,*q; p=new Node; p->next=NULL; p->gt=x; q=*l; if(q==NULL) q=p; else { while (q!=NULL) { q=q->next; } q=p; } } void display(Node **l) { Node *p; p=*l; if (p==NULL) { } else { while (p!=NULL) { p=p->next; } } } void main() { Node *p; int lc; int x; makenull(&p); do { menu(); switch(lc) { case 1: do { if(x!=-1) AddLinkeList(&p,x); } while(x!=-1); break; case 2: display(&p); break; } } while(lc!=3); }
Cánh Chym ứ mỏi
Cậu có cái link nào giữ cái List đó không mà bảo nó không báo rỗng ??? Mới tập viết thì làm ơn dùng reference to pointer cũng được rồi, đua đòi pointer to pointer làm gì cho khổ thế, viết thế này thì có debug mà khóc. Đặt tên biến kiểu này thì không biết ai rảnh mà chấm bài cho cậu nhỉ ? Chẳng lẽ thầy cậu cho cậu đặt tên lc, bc thế à ? p là gì, q là gì ? No comment + Variable is a letter --> It's not code for human reading !!! Làm ơn học cách đặt tên biến dùmg 1 cái :
Example :
C++ Code:
#include<iostream> #include<cstdlib> using namespace std; struct LLNode{ int data; struct LLNode *__ptr; }; struct LLNode *_mCurrentLink = NULL; void AddNodeToList(int item) { LLNode *_firstLink, *_firstLink2; _firstLink = new LLNode; _firstLink->data = item; _firstLink->__ptr = NULL; if(_mCurrentLink == NULL) { _mCurrentLink = _firstLink; } else { _firstLink2 = _mCurrentLink; while(_firstLink2->__ptr != NULL) _firstLink2 = _firstLink2->__ptr; _firstLink2->__ptr = _firstLink; } } void TraverseList() { LLNode *_firstLink; _firstLink = _mCurrentLink; do{ if(_firstLink == NULL) else{ _firstLink = _firstLink->__ptr; } }while(_firstLink!=NULL); } void DeleteANode() { LLNode *_firstLink; if(_mCurrentLink == NULL) else{ _firstLink = _mCurrentLink; _mCurrentLink = _mCurrentLink->__ptr; delete _firstLink; } } int main() { AddNodeToList(5); AddNodeToList(1); AddNodeToList(6); AddNodeToList(7); TraverseList(); return 0; }
Cánh Chym ứ mỏi