#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node NODE;
/* 创建单链表 */
NODE *creatqlist()
{
NODE *head, *p, *s;
int num;
head
= (NODE
*)malloc(sizeof(NODE
)); p = head;
/* 输入数据:1 2 3 4 5 6 0 */
num = 1;
while (num != 0)
{
s
= (NODE
*)malloc(sizeof(NODE
));
s->data = num;
p->next = s;
p = s;
if (num == 1)
num = 2;
else if (num == 2)
num = 3;
else if (num == 3)
num = 4;
else if (num == 4)
num = 5;
else if (num == 5)
num = 6;
else if (num == 6)
num = 0;
}
p->next = NULL;
return head;
}
/* 删除第i个结点 */
void deleteNode(NODE *head, int i)
{
NODE *p, *s;
int j = 0;
p = head;
/* 找到第i个结点的前一个结点 */
while (p->next != NULL && j < i - 1)
{
p = p->next;
j++;
}
if (p->next == NULL || j != i - 1)
{
printf("the delete position is illegal\n"); }
else
{
s = p->next;
p->next = s->next;
}
}
int main()
{
NODE *q, *HEAD;
/* 建立链表 */
HEAD = creatqlist();
/* 输出删除前的数据 */
q = HEAD->next;
printf("the input number are:\n");
while (q != NULL)
{
q = q->next;
}
/* 删除第3个元素 */
deleteNode(HEAD, 3);
/* 输出删除后的数据 */
q = HEAD->next;
printf("the input number after delete are:\n");
while (q != NULL)
{
q = q->next;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlCnsKICAgIGludCBkYXRhOwogICAgc3RydWN0IG5vZGUgKm5leHQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCBub2RlIE5PREU7CgovKiDliJvlu7rljZXpk77ooaggKi8KTk9ERSAqY3JlYXRxbGlzdCgpCnsKICAgIE5PREUgKmhlYWQsICpwLCAqczsKICAgIGludCBudW07CgogICAgaGVhZCA9IChOT0RFICopbWFsbG9jKHNpemVvZihOT0RFKSk7CiAgICBwID0gaGVhZDsKCiAgICAvKiDovpPlhaXmlbDmja7vvJoxIDIgMyA0IDUgNiAwICovCiAgICBudW0gPSAxOwoKICAgIHdoaWxlIChudW0gIT0gMCkKICAgIHsKICAgICAgICBzID0gKE5PREUgKiltYWxsb2Moc2l6ZW9mKE5PREUpKTsKCiAgICAgICAgcy0+ZGF0YSA9IG51bTsKICAgICAgICBwLT5uZXh0ID0gczsKICAgICAgICBwID0gczsKCiAgICAgICAgaWYgKG51bSA9PSAxKQogICAgICAgICAgICBudW0gPSAyOwogICAgICAgIGVsc2UgaWYgKG51bSA9PSAyKQogICAgICAgICAgICBudW0gPSAzOwogICAgICAgIGVsc2UgaWYgKG51bSA9PSAzKQogICAgICAgICAgICBudW0gPSA0OwogICAgICAgIGVsc2UgaWYgKG51bSA9PSA0KQogICAgICAgICAgICBudW0gPSA1OwogICAgICAgIGVsc2UgaWYgKG51bSA9PSA1KQogICAgICAgICAgICBudW0gPSA2OwogICAgICAgIGVsc2UgaWYgKG51bSA9PSA2KQogICAgICAgICAgICBudW0gPSAwOwogICAgfQoKICAgIHAtPm5leHQgPSBOVUxMOwoKICAgIHJldHVybiBoZWFkOwp9CgovKiDliKDpmaTnrKxp5Liq57uT54K5ICovCnZvaWQgZGVsZXRlTm9kZShOT0RFICpoZWFkLCBpbnQgaSkKewogICAgTk9ERSAqcCwgKnM7CiAgICBpbnQgaiA9IDA7CgogICAgcCA9IGhlYWQ7CgogICAgLyog5om+5Yiw56ysaeS4que7k+eCueeahOWJjeS4gOS4que7k+eCuSAqLwogICAgd2hpbGUgKHAtPm5leHQgIT0gTlVMTCAmJiBqIDwgaSAtIDEpCiAgICB7CiAgICAgICAgcCA9IHAtPm5leHQ7CiAgICAgICAgaisrOwogICAgfQoKICAgIGlmIChwLT5uZXh0ID09IE5VTEwgfHwgaiAhPSBpIC0gMSkKICAgIHsKICAgICAgICBwcmludGYoInRoZSBkZWxldGUgcG9zaXRpb24gaXMgaWxsZWdhbFxuIik7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcyA9IHAtPm5leHQ7CiAgICAgICAgcC0+bmV4dCA9IHMtPm5leHQ7CiAgICAgICAgZnJlZShzKTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBOT0RFICpxLCAqSEVBRDsKCiAgICAvKiDlu7rnq4vpk77ooaggKi8KICAgIEhFQUQgPSBjcmVhdHFsaXN0KCk7CgogICAgLyog6L6T5Ye65Yig6Zmk5YmN55qE5pWw5o2uICovCiAgICBxID0gSEVBRC0+bmV4dDsKCiAgICBwcmludGYoInRoZSBpbnB1dCBudW1iZXIgYXJlOlxuIik7CgogICAgd2hpbGUgKHEgIT0gTlVMTCkKICAgIHsKICAgICAgICBwcmludGYoIiVkXHQiLCBxLT5kYXRhKTsKICAgICAgICBxID0gcS0+bmV4dDsKICAgIH0KCiAgICBwcmludGYoIlxuIik7CgogICAgLyog5Yig6Zmk56ysM+S4quWFg+e0oCAqLwogICAgZGVsZXRlTm9kZShIRUFELCAzKTsKCiAgICAvKiDovpPlh7rliKDpmaTlkI7nmoTmlbDmja4gKi8KICAgIHEgPSBIRUFELT5uZXh0OwoKICAgIHByaW50ZigidGhlIGlucHV0IG51bWJlciBhZnRlciBkZWxldGUgYXJlOlxuIik7CgogICAgd2hpbGUgKHEgIT0gTlVMTCkKICAgIHsKICAgICAgICBwcmludGYoIiVkXHQiLCBxLT5kYXRhKTsKICAgICAgICBxID0gcS0+bmV4dDsKICAgIH0KCiAgICBwcmludGYoIlxuIik7CgogICAgcmV0dXJuIDA7Cn0=