• 建立一个单链表,并删除链表中值为W的元素


    #include<iostream>
    #include<algorithm>
    #include<string.h>
    #include<stdio.h>
    #include<malloc.h>
    using namespace std;
    typedef struct node
    {
        int data;
        struct node *next;//指向类型完全相同的指针
        int len;
    } Lnode,*Linklist;
    //一个是结构体类型,一个是结构体指针类型
    int n,tmp;
    Linklist head,p,q;
    Lnode *creat_L(int n)
    {
        head=(Linklist)malloc(sizeof(Lnode));//建立头节点
        head->next=NULL;//把头节点置为空
        p=head;//结构体指针负责连接链表
        int tmp;
        p->len=n;
        while(n--)
        {
            scanf("%d",&tmp);
            q=(Linklist)malloc(sizeof(Lnode));//q负责分配空间和与p进行连接
            q->data=tmp;//把数据域赋值
            q->next=NULL;//其设置为空
            p->next=q;//再连接这个新的节点
            p=q;//更新p,把p进行移动
        }
        return head;
    }
    void print_L(Linklist head)
    {
        Linklist s=head->next;//头节点为空值
        printf("%d
    ",head->len);
        while(s!=NULL)
        {
            if (s->next!=NULL){
              printf("%d ",s->data);
            }else{
              printf("%d
    ",s->data);
            }
            s=s->next;//链表的移动
        }
    }
    void del(Linklist head,int w)
    {
        Linklist s=head;//设置为头节点
        Linklist tmp;//需要设置一个新的节点,这样就能比较容易的实现删除
        while(s!=NULL)
        {
            tmp=s->next;
            if (tmp!=NULL && tmp->data==w)//这个值首先不为空,并且和w相等
            {
                s->next=tmp->next;//把s->next的值由tmp变成tmp->next
                head->len--;//长度减一
                free(tmp);
            }
            else
                s=s->next;
        }
        return ;
    }
    int main()
    {
        Linklist head;
        int n,w;
        while(~scanf("%d",&n))
        {
            head=creat_L(n);
            print_L(head);
            scanf("%d",&w);
            del(head,w);
            print_L(head);
        }
        return 0;
    }
    /*
    10
    56 25 12 33 66 54 7 12 33 12
    12
    */
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    视图和同义词的区别
    【MooTools】自定义滚动条小插件
    有理想的程序员必须知道的15件事
    革新:.NET 2.0的自定义配置文件体系初探
    我的2006年学习计划
    为ASP.NET 2.0配置数据源
    通用异常处理框架
    泛型的序列化问题
    实战SVN For Apache2(二)
    LightningFramework系列(一、初步总架构图)
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9941121.html
Copyright © 2020-2023  润新知