30/09/2018, 20:10

Nhờ Fix lỗi chương trình tạo danh sách liên kết đơn!

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
// 1.Khai bao du lieu kieu du lieu danh sach lien ket don
struct Node 
{
	int data;
	struct Node *Next;
};
 typedef struct node NODE;
struct List 
{
	NODE *pHead;
	NODE *pTail;

}; 
typedef struct List LIST;
// 2. Khoi tao danh sach lien ket don! 
void Init(LIST &l)
{
	l.pHead=l.pTail=NULL;
}
/*
// Khoi tao theo cu phap C thuan tuy .
void Init( LIST *l)
{
	l->pHead=l->pTail=NULL;
}*/
// 3. Tao node trong danh sach
NODE* GetNode(int x) // x chinh la du lieu dua vao data.
{    // cap phat 1 node 
	NODE *p =new NODE; //cap phat theo cau truc C++.
	/*
	  or NODE *p;
	  p=(NODE*)malloc(sizeof(NODE);
	*/ 
	//kiem tra bo nho con trong hay khong ?
	if(p==NULL)
	return NULL;
	p->data =x; // Luu bien x vao data .
	p->Next =NULL; // Khoi tao moi lien ket .
	return p;
}
	// 4. Them node vao danh sach
	// 4.1 Them vao dau :
	// Them node p vao dau danh sach
	void AddHead(LIST &l,NODE *p)
	{
		if(l.pHead==NULL) // Tuc danh sach bi rong !
		l.pHead=l.pTail=p;
		else
		{
		   p->pNext=l.pHead; //p quang day de tham gia vao danh sach
		   l.pHead=p; // p chinh thuc tham gia vao danh sach.	
		}
	}
	// Them node P vao cuoi danh sach
	void AddTail(LIST &l,NODE *p)
	{
		if(l.pHead==NULL)
		l.pHead=l.pTail=p;
		else
		{
			l.pTail->pNext=p; // l.pTail quang day noi voi p
			l.pTail=p;
			
		}
	}
	// 5. Nhap du lieu cho danh sach
	void InPut(LIST &l)
	{
		int n;
		printf("
Ban muon nhap bao nhieu Node !");
		sanf("%d",&n);
		Init(l); // Khoi tao danh sach.
		for(int i=1;i<=n;i++)
		{
			// Moi vong lap la ta nhap 1 Node
			int x;
			printf("
 Nhap vao data:");
			sanf("%d",&x);
			NODE *p =GetNode(x); // Dua data vao Node p ,tao ra node p
			AddTail(l,p); //Them Node p vao cuoi danh sach.
		}
	}
	void OutPut(LIST l)
	{
		//for(int i=0;i<n;i++) day la doi voi mang 
		for(NODE *p = l.Head;p!=NULL;p=p->pNext)
		{
			printf("%4d",p->data);
		}
	}
	int main()
	{
		LIST l;
		InPut(l);
		OutPut(l);
		getch();
		return 0;
	}
NhatTa viết 22:19 ngày 30/09/2018

Bạn đưa code vô hết cho đúng định dạng. Nửa trên nửa dưới khó đọc quá.hehe. Và cụ thể là bạn bị lỗi gì. Ví dụ: chạy không được hay chạy nhưng sai kết quả

Mạc Anh Hiếu viết 22:22 ngày 30/09/2018

http://codepad.org/vwONRgxP
check giúp e cái :v

NhatTa viết 22:15 ngày 30/09/2018

Lâu rồi không code lại c/c++ nên lơ mơ. Code của bạn về phần giải thuật thì không sai. Chỉ sai một số lỗi cú pháp đơn giản thôi. Bạn nên chạy thử, debug đọc từng lỗi để hiểu cách làm việc và cách fix các lỗi này.

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>

struct Node
{
	int data;
	struct Node *pNext;
};
typedef struct Node NODE;

NODE* GetNode(int x)
{
	NODE *p = new NODE;

	if (p == NULL)
		return NULL;
	p->data = x; 
	p->pNext = NULL;
	return p;
}

struct List
{
	NODE *pHead;
	NODE *pTail;

};
typedef struct List LIST;


void Init(LIST &l)
{
	l.pHead = l.pTail = NULL;
}

void AddHead(LIST &l, NODE *p)
{
	if (l.pHead == NULL) 
		l.pHead = l.pTail = p;
	else
	{
		p->pNext = l.pHead; 
		l.pHead = p;
	}
}
// Them node P vao cuoi danh sach
void AddTail(LIST &l, NODE *p)
{
	if (l.pHead == NULL)
		l.pHead = l.pTail = p;
	else
	{
		l.pTail->pNext = p; // l.pTail quang day noi voi p
		l.pTail = p;

	}
}
// 5. Nhap du lieu cho danh sach
void InPut(LIST &l)
{
	int n;
	printf("\nBan muon nhap bao nhieu Node !");
	scanf_s("%d", &n);
	Init(l); // Khoi tao danh sach.
	for (int i = 1; i <= n; i++)
	{
		// Moi vong lap la ta nhap 1 Node
		int x;
		printf("\n Nhap vao data:");
		scanf_s("%d", &x);
		NODE *p = GetNode(x); // Dua data vao Node p ,tao ra node p
		AddTail(l, p); //Them Node p vao cuoi danh sach.
	}
}
void OutPut(LIST l)
{
	//for(int i=0;i<n;i++) day la doi voi mang 
	for (NODE *p = l.pHead; p != NULL; p = p->pNext)
	{
		printf("%4d", p->data);
	}
}

int main()
{
	LIST l;
	InPut(l);
	OutPut(l);
	_getch();
    return 0;
}

``

Mạc Anh Hiếu viết 22:12 ngày 30/09/2018

Anh Hightlight những chỗ lỗi cú pháp giúp e cái đc hok ạ .tks ạ

Mạc Anh Hiếu viết 22:10 ngày 30/09/2018

:Phj e fix được lỗi rồi ,tất cả chỉ là quên chữ p dầu pHead ,pNext @@, cảm ơn a nhiều

Bài liên quan
0