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

#include<iostream>

using namespace std;

struct node{
	int data;
	node *next;
};

node *createNode(int x){
    node *temp = new node;
    temp->next = NULL;
    temp->data = x; 
    return temp;
}

void printList(node *l){
	node *p = l;
	while (p != NULL){
		cout << p->data << " ";
		p = p->next;
	}
}

node *addElement(node*p, int x){
	node *temp = createNode(x);
	p->next = temp;
	return temp;
}

int main(){
	int n, x;
	cin >> n;
	cin >> x;
	node *l = createNode(x);
	node *p = l;
	for (int i = 1; i < n; i++){
		cin >> x;
		p = addElement(p, x);
	}
	printList(l);
	return 0;
}

Mọi người giải thích giúp em vai trò của node *p được không ạ? Và khi gán *p = l thì 2 cái này tương đương nhau hay ntn ạ? Lúc thì truyền vào hàm là p, lúc thì chuyền vào hàm là l ạ.
Em cảm ơn ạ !!!

l là phần tử đầu tiên của danh sách.
p là phần tử cuối cùng của danh sách.

Có phải khi thêm thì thêm ngay sau phần tử cuối cùng không? Đó là lúc dùng p.
Khi duyệt danh sách (như in ra) thì phải duyệt từ phần tử đầu tiên đến cuối. Đó là lúc dùng l.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?