#include <bits/stdc++.h>
using namespace std;
using ll = long long;
//Them, xoa
struct node{
int data;
node *next;
};
node* taoNode(int x){
node *newNode = new node;
newNode->data = x;
newNode->next = NULL;
return newNode;
}
void duyet(node *head){
while(head != NULL){
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
int dem(node *head){
int cnt = 0;
while(head != NULL){
++cnt;
head = head->next;
}
return cnt;
}
//pass by value
void themdau(node *&head, int x){
node *moi = taoNode(x);
moi->next = head;
head = moi;
}
void themcuoi(node *&head, int x){
node *moi = taoNode(x);
//di den node cuoi trong dslk
node *tmp = head; // dung de duyet
if(head == NULL){
head = moi; return;
}
while(tmp->next != NULL){
tmp = tmp->next;
}
//tmp : node cuoi
tmp->next = moi;
}
//Muon them vao vi tri thu k => den duoc node truoc no : k - 1
void themgiua(node *&head, int x, int k){
int n = dem(head);
if(k < 1 || k > n + 1){
return;
}
if(k == 1){
themdau(head, x); return;
}
node *moi = taoNode(x);
node *tmp = head;
for(int i = 1; i <= k - 2; i++){
tmp = tmp->next;
}
moi->next = tmp->next; // k
tmp->next = moi;
}
int main(){
node *head = NULL;
for(int i = 1; i <= 10; i++){
themcuoi(head, i);
}
themgiua(head, 100, 11);
duyet(head);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCi8vVGhlbSwgeG9hIApzdHJ1Y3Qgbm9kZXsKICAgIGludCBkYXRhOwogICAgbm9kZSAqbmV4dDsKfTsKCm5vZGUqIHRhb05vZGUoaW50IHgpewogICAgbm9kZSAqbmV3Tm9kZSA9IG5ldyBub2RlOwogICAgbmV3Tm9kZS0+ZGF0YSA9IHg7CiAgICBuZXdOb2RlLT5uZXh0ID0gTlVMTDsKICAgIHJldHVybiBuZXdOb2RlOwp9Cgp2b2lkIGR1eWV0KG5vZGUgKmhlYWQpewogICAgd2hpbGUoaGVhZCAhPSBOVUxMKXsKICAgICAgICBjb3V0IDw8IGhlYWQtPmRhdGEgPDwgICIgIjsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IGRlbShub2RlICpoZWFkKXsKICAgIGludCBjbnQgPSAwOwogICAgd2hpbGUoaGVhZCAhPSBOVUxMKXsKICAgICAgICArK2NudDsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIHJldHVybiBjbnQ7Cn0KCi8vcGFzcyBieSB2YWx1ZQp2b2lkIHRoZW1kYXUobm9kZSAqJmhlYWQsIGludCB4KXsKICAgIG5vZGUgKm1vaSA9IHRhb05vZGUoeCk7CiAgICBtb2ktPm5leHQgPSBoZWFkOwogICAgaGVhZCA9IG1vaTsKfQoKCnZvaWQgdGhlbWN1b2kobm9kZSAqJmhlYWQsIGludCB4KXsKICAgIG5vZGUgKm1vaSA9IHRhb05vZGUoeCk7CiAgICAvL2RpIGRlbiBub2RlIGN1b2kgdHJvbmcgZHNsawogICAgbm9kZSAqdG1wID0gaGVhZDsgLy8gZHVuZyBkZSBkdXlldAogICAgaWYoaGVhZCA9PSBOVUxMKXsKICAgICAgICBoZWFkID0gbW9pOyByZXR1cm47CiAgICB9CiAgICB3aGlsZSh0bXAtPm5leHQgIT0gTlVMTCl7CiAgICAgICAgdG1wID0gdG1wLT5uZXh0OwogICAgfQogICAgLy90bXAgOiBub2RlIGN1b2kKICAgIHRtcC0+bmV4dCA9IG1vaTsKfQoKLy9NdW9uIHRoZW0gdmFvIHZpIHRyaSB0aHUgayA9PiBkZW4gZHVvYyBub2RlIHRydW9jIG5vIDogayAtIDEKdm9pZCB0aGVtZ2l1YShub2RlIComaGVhZCwgaW50IHgsIGludCBrKXsKICAgIGludCBuID0gZGVtKGhlYWQpOwogICAgaWYoayA8IDEgfHwgayA+IG4gKyAxKXsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZihrID09IDEpewogICAgICAgIHRoZW1kYXUoaGVhZCwgeCk7IHJldHVybjsKICAgIH0KICAgIG5vZGUgKm1vaSA9IHRhb05vZGUoeCk7CiAgICBub2RlICp0bXAgPSBoZWFkOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBrIC0gMjsgaSsrKXsKICAgICAgICB0bXAgPSB0bXAtPm5leHQ7IAogICAgfQogICAgbW9pLT5uZXh0ID0gdG1wLT5uZXh0OyAvLyBrCiAgICB0bXAtPm5leHQgPSBtb2k7Cn0KCmludCBtYWluKCl7CiAgICBub2RlICpoZWFkID0gTlVMTDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gMTA7IGkrKyl7CiAgICAgICAgdGhlbWN1b2koaGVhZCwgaSk7CiAgICB9CiAgICB0aGVtZ2l1YShoZWFkLCAxMDAsIDExKTsKICAgIGR1eWV0KGhlYWQpOwp9