#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int val;
struct node *next;
} Node;
Node *head = NULL;
Node* createN(int x){
Node *newnode;
newnode
= (Node
*)malloc(sizeof(Node
)); newnode->val = x;
newnode->next = NULL;
return newnode;
}
void initL(int n){
int x, i;
Node *p;
head = createN(x);
p = head;
for(i = 1; i < n; i++){
p->next = createN(x);
p = p->next;
}
}
void freeL(){
Node *p;
while(head != NULL){
p = head->next;
head = p;
}
}
void printL(){
Node *p = head;
while(p != NULL){
p = p->next;
}
}
void delX(int x){
Node *p = head;
Node *prev = NULL;
while(p != NULL){
if(p->val == x){
if(p == head){ // 頭の要素を削除
head = p->next;
p = head;
} else {
prev->next = p->next;
p = prev->next;
}
} else {
prev = p;
p = p->next;
}
}
}
int main(void){
int n, x;
initL(n); // リスト作成
scanf("%d", &x
); // 削除対象の値 delX(x); // ノード削除
printL(); // 結果表示
freeL(); // メモリ解放
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IG5vZGUgewogICAgaW50IHZhbDsKICAgIHN0cnVjdCBub2RlICpuZXh0Owp9IE5vZGU7CgpOb2RlICpoZWFkID0gTlVMTDsKCk5vZGUqIGNyZWF0ZU4oaW50IHgpewogICAgTm9kZSAqbmV3bm9kZTsKICAgIG5ld25vZGUgPSAoTm9kZSAqKW1hbGxvYyhzaXplb2YoTm9kZSkpOwogICAgbmV3bm9kZS0+dmFsID0geDsKICAgIG5ld25vZGUtPm5leHQgPSBOVUxMOwogICAgcmV0dXJuIG5ld25vZGU7Cn0KCnZvaWQgaW5pdEwoaW50IG4pewogICAgaW50IHgsIGk7CiAgICBOb2RlICpwOwogICAgc2NhbmYoIiVkIiwgJngpOwogICAgaGVhZCA9IGNyZWF0ZU4oeCk7CiAgICBwID0gaGVhZDsKICAgIGZvcihpID0gMTsgaSA8IG47IGkrKyl7CiAgICAgICAgc2NhbmYoIiVkIiwgJngpOwogICAgICAgIHAtPm5leHQgPSBjcmVhdGVOKHgpOwogICAgICAgIHAgPSBwLT5uZXh0OwogICAgfQp9Cgp2b2lkIGZyZWVMKCl7CiAgICBOb2RlICpwOwogICAgd2hpbGUoaGVhZCAhPSBOVUxMKXsKICAgICAgICBwID0gaGVhZC0+bmV4dDsKICAgICAgICBmcmVlKGhlYWQpOwogICAgICAgIGhlYWQgPSBwOwogICAgfQp9Cgp2b2lkIHByaW50TCgpewogICAgTm9kZSAqcCA9IGhlYWQ7CiAgICB3aGlsZShwICE9IE5VTEwpewogICAgICAgIHByaW50ZigiJWQgIiwgcC0+dmFsKTsKICAgICAgICBwID0gcC0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKfQoKdm9pZCBkZWxYKGludCB4KXsKICAgIE5vZGUgKnAgPSBoZWFkOwogICAgTm9kZSAqcHJldiA9IE5VTEw7CgogICAgd2hpbGUocCAhPSBOVUxMKXsKICAgICAgICBpZihwLT52YWwgPT0geCl7CiAgICAgICAgICAgIGlmKHAgPT0gaGVhZCl7IC8vIOmgreOBruimgee0oOOCkuWJiumZpAogICAgICAgICAgICAgICAgaGVhZCA9IHAtPm5leHQ7CiAgICAgICAgICAgICAgICBmcmVlKHApOwogICAgICAgICAgICAgICAgcCA9IGhlYWQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwcmV2LT5uZXh0ID0gcC0+bmV4dDsKICAgICAgICAgICAgICAgIGZyZWUocCk7CiAgICAgICAgICAgICAgICBwID0gcHJldi0+bmV4dDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByZXYgPSBwOwogICAgICAgICAgICBwID0gcC0+bmV4dDsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKHZvaWQpewogICAgaW50IG4sIHg7CiAgICBzY2FuZigiJWQiLCAmbik7ICAvLyDjg47jg7zjg4nmlbAKICAgIGluaXRMKG4pOyAgICAgICAgIC8vIOODquOCueODiOS9nOaIkAogICAgc2NhbmYoIiVkIiwgJngpOyAgLy8g5YmK6Zmk5a++6LGh44Gu5YCkCiAgICBkZWxYKHgpOyAgICAgICAgICAvLyDjg47jg7zjg4nliYrpmaQKICAgIHByaW50TCgpOyAgICAgICAgIC8vIOe1kOaenOihqOekugogICAgZnJlZUwoKTsgICAgICAgICAgLy8g44Oh44Oi44Oq6Kej5pS+CiAgICByZXR1cm4gMDsKfQo=