30/09/2018, 21:00
Danh Sách Liên Kết Đơn (Nhập - Xuất)
Mọi người giúp em xem vì sao khi em nhập các Node ra xong bước tiếp theo xuất thì nó bị lỗi.
#include “stdio.h”
#include “conio.h”
//1 - Khai bao cau truc du lieu danh sach lien ket don
struct Node
{
int data;
struct Node* pNext;
};
typedef struct Node NODE;
struct List
{
struct Node *pHead;
struct Node *pTail;
};
typedef struct List LIST;
//2 - Khoi tao danh sach lien ket
void Init(LIST &l)
{
l.pHead = l.pTail = NULL;
}
//3 - Tao NODE Trong Danh Sach
NODE *GetNode(int x) //x la du lieu dua vao data
{
//Cap phat 1 Node
NODE *p = new NODE;
if (p == NULL)
{
return NULL;
}
p -> data = x; //Luu x vao data
p->pNext == NULL;
return p;
}
//4 - Them NODE vao danh sach (Vao dau hoac vao cuoi)
void AddHead(LIST &l, NODE *p)
{
if (l.pHead == NULL)
{
l.pHead = l.pTail = p;
}
else
{
p->pNext = l.pHead; //p quang day de tham gia vao danh sach lien ket
l.pHead = p;
}
}
void AddTail(LIST &l, NODE *p)
{
if (l.pHead == NULL)
{
l.pHead = l.pTail = p;
}
else
{
l.pTail->pNext = p;
l.pTail = p;
}
}
void Input(LIST &l, int n)
{
int x;
Init(l); //Khoi tao cho danh sach lien ket
for (int i = 1; i <= n; i++)
{
printf("Nhap Du Lieu Cho Du Lieu Cua Node Thu %d: ", i);
scanf("%d", &x);
NODE *p = GetNode(x);
AddHead(l, p);
}
}
void Output(LIST l)
{
int i = 1;
for (NODE *p = l.pHead; p != NULL; p = p->pNext)
{
printf("Gia Tri Node Thu %d La: %d
", i++, p->data);
}
}
int main()
{
LIST l;
int n;
printf("Nhap So Node Ban Muon Tao: ");
scanf("%d", &n);
Input(l, n);
Output(l);
getch();
return 0;
}
Bài liên quan
void AddHead(LIST &l, NODE *p)
{
if (l.pHead == NULL){
l.pHead = l.pTail = p;
p->pNext = NULL;
}
else {
p->pNext = l.pHead; //p quang day de tham gia vao danh sach lien ket
l.pHead = p;
}
}
sửa lại hàm này là chạy ngon nhé b
Lỗi ở hàm GetNode, dòng
p->pNext == NULL
, phải làp->pNext = NULL
chứ. Và hàminput
cũng sai nữa, bạn phảiaddTail
chứ, sao lạiaddHead
được, làm vậy nó đảo ngược giá trị của các phần tử trongLIST
hếtComment k cần thiết hơi nhiều
à, mình đã hiểu ý bạn nói, cảm ơn bạn nhiều nha
không hiểu sao cái mình gọi hàm xuất mà nó rơi vào vòng lặp vô tận, và chỉ xuất ra giá trị n !
cảm ơn mn!