单链表,多个指定元素的删除

建立长度为n的单链表,n>0,删除单链表中等于给定值的元素。数据类型指定为整型。

输入格式:

第一行为链表长度n;

第二行为链表中的n个数据元素的值;

第三行为需要删除的元素值。

输出格式:

输出为删除后的链表中的所有数据元素的值。

输入样例:

4

45 12 34 8

34

输出样例:

45 12 8

供参考
#include <stdio.h>

typedef struct node
{
    int n;
    struct node *next;
}Node;

int main() 
{
    Node *head,*p,*q;
    int n,t;
    scanf("%d",&n);
    q=head=(Node*)malloc(sizeof(Node));
    head->next=NULL;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&t);
        p=(Node*)malloc(sizeof(Node));
        p->n=t;
        p->next=NULL;

        q->next=p;
        q=p;
    }

    scanf("%d",&t);
    q=head;
    p=q->next;
    while(p)
    {
        if(p->n==t)
        {
            q->next=p->next;
            free(p);
            p=q->next;
        }
        q=p;
        p=q->next;
    }

    p=head->next;
    while(p)
    {
        printf("%d ",p->n);
        p=p->next;
    }

    return 0;
}

数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633