链表的重要总结 系列二

来源:互联网 发布:软件验收甲方发言稿 编辑:程序博客网 时间:2024/06/06 09:46
输出 链表的函数。
void input(struct node *head)
{
    struct node *tail;
    for(tail = head -> next; tail != NULL; tail = tail -> next)
    {
        printf("%d", tail -> data);
        if(tail -> next != NULL)
            printf(" ");
        else printf("\n");
    }
}
对于含有头结点的 n个结点的链表, 删除相同数据的结点,记录剩下结点的数量并返回的函数。
int del(struct node *head, int n)
{
    struct node *p, *tail, *t;
    for(p = head -> next; p -> next != NULL; p = p -> next)
    {
        tail = p;
        t = tail -> next;
        while(t -> next != NULL)
        {
            if(p -> data == t -> data)
            {
                tail -> next = t -> next;
                free(t);
                n--;
                t = tail -> next;
            }
            else
            {
                tail = t;
                t = t -> next;
            }
        }
        if(t -> next == NULL)
        {
            if(t -> data == p -> data)
            {
                tail -> next = NULL;
                free(t);
                n--;
            }
        }
    }
    return n;
}
2 0
原创粉丝点击