mng cho e hỏi cái thứ tự compile với ạ, có phải là từ trên xuống dưới k ạ, như ở ví dụ này của e, ở trong node *newNode thì e có gọi thằng node *addTail , ở code hiện tại e post lên là đúng và chạy được nhưng còn khi e cho thằng node *addTail xuống dưới thằng node *newNode thì lại báo lỗi ạ .Như thế có phải là phải viết theo thứ tự k ạ ?? vì e mới học nên code viết vẫn hơi lằng nhằng với rối mong mng thông cảm ạ
#include <iostream>;
using namespace std;
struct node {
int data;
node *pNext;
};
node *createNode(int x){
node *create = new node;
create -> data = x;
create -> pNext = NULL;
return create;
}
node *addElement(node *list, int x){
node *temp = createNode(x);
list -> pNext = temp;
return temp;
}
node *getNode(int k, node *p){
node *temp = p;
for(int i = 0; i < k; i++){
temp = temp -> pNext;
}
return temp;
}
node *addTail(node *first, int data){
node *temp = first;
while(temp -> pNext != NULL){
temp = temp -> pNext;
}
node *addT = createNode(data);
temp -> pNext = addT;
return first;
}
node *newNode(node *list, int num){
node *temp = list;
node *first = new node;
while(temp != NULL){
if(temp -> data <= num){
first = createNode(temp -> data);
temp = temp -> pNext;
break;
}
temp = temp -> pNext;
}
while(temp != NULL){
if(temp -> data <= num){
first = addTail(first, temp -> data);
}
temp = temp -> pNext;
}
return first;
}
void printList(node *list){
node *p = list;
while(p != NULL){
cout << p -> data << " ";
p = p -> pNext;
}
}
int main(){
int n, x, k;
cout << "Nhap n: ";
cin >> n;
cout << "Nhap x: ";
cin >> x;
node *list = createNode(x);
node *p = list;
for(int i = 1; i < n; i++){
cout << "Nhap x: ";
cin >> x;
p = addElement(p, x);
}
cout << "\nNhap vi tri phan tu lam chot: ";
cin >> k;
cout << "\n Danh sach moi la: ";
list = newNode(list, getNode(k, list) -> data);
printList(list);
}