30/09/2018, 17:00

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.
";
		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.
";
		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 << "	";
		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!

Coulson viết 19:02 ngày 30/09/2018
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.

Văn Hồng Hà viết 19:16 ngày 30/09/2018

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

Gió viết 19:13 ngày 30/09/2018
void AddToTail(LIST &L, int Data)
{
	NODE newEle = CreateNode(Data);
	if (newEle == NULL)
	{
		cout &lt;&lt; "Not enough memories.\n";
		exit(1);
	}
	L.pTail-&gt;Next = newEle;
	L.pTail = newEle;
}

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;
}
void Output(LIST L)
{
	NODE p = new struct node;
	while (p != NULL)
	{
		cout &lt;&lt; p-&gt;Data &lt;&lt; "\t";
		p = p-&gt;Next;
	}
}
  • NODE p =L.pHead
Bài liên quan
0