zoukankan      html  css  js  c++  java
  • 建立一个单链表,并删除链表中值为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(添加时记得备注)
  • 相关阅读:
    掌握 ActionResult
    EF 的 霸气配置
    MVC 3 数据验证 Model Validation 详解
    Entity Framework 插入数据 解决主键非自增问题
    线程池(C#)
    socket 基础学习
    oracle创建job方法
    C# 任意类型数据转JSON格式
    JDBC(连接数据库的四个主要步骤)
    oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9941121.html
Copyright © 2011-2022 走看看