#include <stdio.h>
#include <stdlib.h>

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

typedef struct node NODE;

/* 创建单链表 */
NODE *creatlist()
{
    NODE *head, *p, *s;
    int num;

    head = (NODE *)malloc(sizeof(NODE));
    p = head;

    printf("1 2 3 4 5 6 0：\n");
    scanf("%d", &num);

    while (num != 0)
    {
        s = (NODE *)malloc(sizeof(NODE));

        s->data = num;
        p->next = s;
        p = s;

        scanf("%d", &num);
    }

    p->next = NULL;

    return head;
}

/* 删除第3个结点 */
void deleteNode(NODE *head, int i)
{
    NODE *p, *s;
    int j = 0;

    p = head;

    /* 找到待删除结点的前一个结点 */
    while (p->next != NULL && j < i - 1)
    {
        p = p->next;
        j++;
    }

    if (p->next == NULL || j != i - 1)
    {
        printf("删除位置非法！\n");
    }
    else
    {
        s = p->next;
        p->next = s->next;

        free(s);
    }
}

int main()
{
    NODE *q, *HEAD;
    int i;

    HEAD = creatlist();

    printf("1 2 3 4 5 6：\n");

    q = HEAD->next;

    while (q != NULL)
    {
        printf("%d\t", q->data);
        q = q->next;
    }

    printf("\n");

    printf("3");
    scanf("%d", &i);

    deleteNode(HEAD, i);

    printf("1 2 3 4 5 6：\n");

    q = HEAD->next;

    while (q != NULL)
    {
        printf("%d\t", q->data);
        q = q->next;
    }

    printf("\n");

    return 0;
}