数据结构:删除数组中的元素(c++)链表形式

6378:删除数组中的元素(链表)

描述:

给定N个整数,将这些整数中与M相等的删除
假定给出的整数序列为:1,3,3,0,-3,5,6,8,3,10,22,-1,3,5,11,20,100,3,9,3
应该将其放在一个链表中,链表长度为20
要删除的数是3,删除以后,链表中只剩14个元素:1 0 -3 5 6 8 10 22 -1 5 11 20 100 9

输入:

输入包含3行:
第一行是一个整数n(1 <= n <= 200000),代表数组中元素的个数。
第二行包含n个整数,代表数组中的n个元素。每个整数之间用空格分隔;每个整数的取值在32位有符号整数范围以内。
第三行是一个整数k,代表待删除元素的值(k的取值也在32位有符号整数范围内)。

输出

输出只有1行:
将数组内所有待删除元素删除以后,输出数组内的剩余元素的值,每个整数之间用空格分隔。

样例输入

20
1 3 3 0 -3 5 6 8 3 10 22 -1 3 5 11 20 100 3 9 3
3

样例输出

1 0 -3 5 6 8 10 22 -1 5 11 20 100 9
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;

void insertlist(long x,listnode l);
void deletelist(long n,listnode l);   //这个函数别写,写了之后程序会超时。
void print(listnode l);
listnode createlist();

typedef struct node
{
    long x;
    struct node*next;
}node,*listnode;

int main()
{
    listnode l,x; //写x主要是为了插入的时候循环次数可以减少,直接用x往后插入,这样代码就不会超时
    l=createlist();
    x=l;
    long con,key,v;
    cin>>con;
    for(long i=0;i<con;i++)  //一边输入数据,一边插入节点
    {
        cin>>v;
        node*p=new node;
        p->x=v;
        p->next=NULL;
        x->next=p;
        x=x->next;
    }
    cin>>key;
    deletelist(key,l);  //删除元素相同的节点
    l=l->next;
    print(l);  //输出链表中节点元素
    return 0;
}

listnode createlist() //创建单链表
{
    listnode l=new nodel
    l->next=NULL;
    return l;
}
void insertlist(long x,listnode l)   //好可惜啊,写这么多结果用不上,代码没有问题,就是超时
{
    node *n=new node;
    listnode q;
    q=l;
    n->x=x;
    n->next=NULL;
    while(q->next!=NULL)
    {
        q=q->next;
    }
    q->next=n;
}

void deletelist(long n,listnode l)
{
    long a=n;
    listnode t=1;
    node*q;
    q=t->next;
    while(q)
    {
        if(q->x==a)
        {
            t->next=q->next;
            free(q);
            q=t->next;
        }
        else
        {
            q=q->next;
            t=t->next;
        }
    }
}

void print(listnode l)
{
    while(l)
    {
        cout<<l->x<<" ";
        l=l->next;
    }
}

记得点个赞再走~拜托啦。

原文链接: https://www.cnblogs.com/Kuller-Yan/p/12914127.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    数据结构:删除数组中的元素(c++)链表形式

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/327718

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午4:23
下一篇 2023年3月1日 下午4:23

相关推荐