• 数据结构上机测试21:单链表操作A


    数据结构上机测试2-1:单链表操作A

    Time Limit: 1000MS Memory Limit: 4096KB

    Problem Description

    输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。

    Input

    第一行输入数据个数n;
    第二行依次输入n个整数;
    第三行输入欲删除数据m。

    Output

    第一行输出原始单链表的长度;
    第二行依次输出原始单链表的数据;
    第三行输出完成删除后的单链表长度;
    第四行依次输出完成删除后的单链表数据。

    Example Input

    10
    56 25 12 33 66 54 7 12 33 12
    12

    Example Output

    10
    56 25 12 33 66 54 7 12 33 12
    7
    56 25 33 66 54 7 33

    #include<stdio.h>
    #include<malloc.h>
    struct LinkList{
        int data;
        struct LinkList *next;
    };
    LinkList * CreateList(LinkList *head,int n){
        LinkList *tail,*r;
        head->next=NULL;
    tail = head;
        for(int i=0;i<n;i++){
            r=(LinkList *)malloc(sizeof(LinkList));
            scanf("%d",&r->data);
            tail->next=r;
            tail=r;
        }
    tail->next = NULL;
        return head;
    }
    LinkList *DeleList(LinkList *&head,int &n,int key)
    {
        LinkList *p,*q,*tail,*temp2;
        p = head;  
        while(p->next)  
        {  
            if(p->next->data==key)  //p的下一个元素与key对比
            {  
                n--;                 
                tail = p->next;   //tail是与key相同的元素的指针地址
                p->next = tail->next;  //将tail的后继赋值给tail的后继
                free(tail);  //释放tail
            }  
            else  
                p = p->next;  
        }  
        printf("%d\n",n);
        return head;
    }
    void DispList(LinkList *head){
        LinkList *p=head->next;
        while(p->next!=NULL){
            printf("%d ",p->data);
            p=p->next;
        }
        printf("%d\n",p->data);
    }
    int main(){
        int n;
        scanf("%d",&n);
        LinkList *head;
        head=(LinkList *)malloc(sizeof(LinkList));
        CreateList(head,n);
    int key;
    scanf("%d",&key);
        printf("%d\n",n);
        DispList(head);
        DeleList(head,n,key);
        DispList(head);
        return 0;
    }

  • 相关阅读:
    笔试题总结
    ubuntu 14.04 vim install youcompleteme
    c语言位域
    strcmp函数的使用
    Spring多数据源的配置和使用
    根据出生日期计算年龄的sql各种数据库写法
    BZOJ3165 : [Heoi2013]Segment
    BZOJ2725 : [Violet 6]故乡的梦
    BZOJ2851 : 极限满月
    BZOJ2837 : 小强的形状
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/6444603.html
Copyright © 2020-2023  润新知