Giúp sửa lỗi trong danh sách liên kết

#include <iostream>
#include <stdio.h>
using namespace std;
typedef struct node
{
	int Data;
	struct node* Next;
}* NODE;
struct list
{
	NODE pHead;
	NODE pTail;
};
typedef struct list LIST;

void Init(LIST &L)
{
	L.pHead = L.pTail = NULL;
}
NODE CreateNode(int Data)
{
	NODE p = new struct node;
	if (p == NULL)
	{
		cout << "Not enough memories.\n";
		exit(1);
	}
	p->Data = Data;
	p->Next = NULL;
}
void AddToTail(LIST &L, int Data)
{
	NODE newEle = CreateNode(Data);
	if (newEle == NULL)
	{
		cout << "Not enough memories.\n";
		exit(1);
	}
	L.pTail->Next = newEle;
	L.pTail = newEle;
}
void Input(LIST &L)
{
	int Data;
	cout << "Enter value: ";
	cin >> Data;
	if (Data < 0)
		exit(1);
	AddToTail(L, Data);
}
void Output(LIST L)
{
	NODE p = new struct node;
	while (p != NULL)
	{
		cout << p->Data << "\t";
		p = p->Next;
	}
}
int main()
{
	LIST L;
	Init(L);
	Input(L);
	Output(L);
	system("pause");
	return 0;
}

Yêu cầu của đề bài là nhập vào danh sách liên kết các số nguyên dương. Ở trên là đoạn code của mình, nhưng không hiểu sao lại bị lỗi sau. Các bạn giúp mình sửa lỗi với.

Lỗi như thế này

Cảm ơn mọi người!

NODE CreateNode(int Data)
{
	NODE p = new struct node;
	if (p == NULL)
	{
		cout &lt;&lt; "Not enough memories.\n";
		exit(1);
	}
	p-&gt;Data = Data;
	p-&gt;Next = NULL;
}

Hàm này chưa return nè nên lúc xài NODE newEle = CreateNode(Data);
nó bị lỗi. đáng lẽ trình biên dịch phải báo lỗi chứ ta.

1 Like

Return rồi vẫn còn lỗi cũ bạn ơi T.T

AddToTail chưa xét TH LIST rỗng pHead=pTail =NULL

void AddToTail(LIST &L, int Data){    
    if(L.pHead==NULL){
        L.pHead=L.pTail=CreateNode(Data);
        return;
    }
    NODE newEle = CreateNode(Data);
    L.pTail->Next = newEle;
    L.pTail = newEle;
}
  • NODE p =L.pHead
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?