30/09/2018, 18:15

Danh sách liên kết trong C++

các anh có thể giải thích dùm em vì sao:
-Trong khi em chỉ gán l.ptail->next=p;

  • thì l.phead->next chuyển từ không có giá trị thành có giá trị
    em cảm ơn rất nhiều ạ

#include<iostream>
#include<conio.h>
using namespace std;
struct node{
	int data;
	node *pNext;
};
typedef struct node NODE;

struct list{
	NODE *pHead;
	NODE *ptail;
};
typedef struct list LIST;



NODE* getNode(int x){
	NODE *p=new NODE;
	if(p==NULL)return NULL;

	p->data=x;
	p->pNext=NULL;
	return p;
}
void addHead(LIST &l,NODE *p){
	if(l.pHead==NULL){
	l.ptail=l.pHead=p;
	}
	else{
		p->pNext=l.pHead;
		l.pHead=p;
	}
}


void init(LIST &l){
	l.ptail=NULL;
	l.pHead=NULL;
}

void addTail(LIST &l,NODE *p){
	if(l.ptail==NULL){
		l.ptail=l.pHead=p;
		cout<<"gia tri cua l.phead->next 			"<<l.pHead->pNext;
	}
	else{
		cout<<"l.head->next luc tail chua gan 			"<<l.pHead->pNext<<endl;
		l.ptail->pNext=p;
		cout<<"l.head->next luc tail da gan 			"<<l.pHead->pNext<<endl;
		l.ptail=p;				
	}
}
void insert(LIST &l,NODE *p){
	char c;
	int x;
	do{
		cout<<"nhap x 	";fflush(stdin);cin>>x;
		p=getNode(x);
		cout<<"gia tri p la 			"<<p<<endl;		
//		addHead(l,p);
		addTail(l,p);
		c=getch();	
		cout<<endl;
	}while(c!=27);

}

void xem(LIST l){
	NODE* pTam=l.pHead;
	cout<<"phead 	 	 	"<<l.pHead<<endl;
	cout<<"l.head->next 		"<<l.pHead->pNext;
	cout<<endl;
	while(pTam!=NULL){
		cout<<pTam->data<<"	";
		pTam=pTam->pNext;
		
	}
}

void xoaCuoi(LIST &l){
	NODE *p=l.pHead;
	while(p->pNext->pNext!=NULL){
		p=p->pNext;
	}	
	delete p->pNext;
	p->pNext=NULL;

	
}
main(){
	LIST l;
	NODE *p;
	init(l);
	insert(l,p);
	xoaCuoi(l);
//	xemdc(l);
	xem(l);
}
Gió viết 20:23 ngày 30/09/2018

Vì ban đầu head, tail cùng chỉ vào một node nên khi thay đổi pnext của node đầu thì pHead->pNext cũng thay đổi.

Long Lch viết 20:18 ngày 30/09/2018

"Vì ban đầu head, tail cùng chỉ vào một node " l.ptail=l.pHead=p;theo em hiểu là gán giá trị của p cho l.phead và l.ptail ,và khi p thay đổi thì l.head và l.tail cũng không đổi.
anh có thể giải thích rõ giúp em được không ạ:blush:

Bài liên quan
0