博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作
阅读量:5112 次
发布时间:2019-06-13

本文共 972 字,大约阅读时间需要 3 分钟。

  给定一个链表,你需要删除那些绝对值相同的节点,对于每个绝对值K,仅保留第一个出现的节点。删除的节点会保留在另一条链表上。简单来说就是去重,去掉绝对值相同的那些。先输出删除后的链表,再输出删除了的链表。

  建立结构体节点,包括起始地址addr,下一个地址to,值value。链表数组索引为地址,接下来就是模拟链表的操作了,并且建立一个flag数组标记对应值K是否出现,若出现则flag[k]=addr,未出现则为-1,注意这里不能为0因为地址值存在为0的情况。最后的输出地址前面要补0,如果是链尾的话,-1则不需要补0。

代码:

#include 
#include
#include
#include
#include
using namespace std;const int maxn=100000+5;struct Node{ int addr; int value; int to;}node[maxn];int flag[maxn];int linkedlist[maxn]; //去重后的链表int removelist[maxn]; //删除节点组成的链表int main(){ int head,n; int a,b,c; for(int i=0;i
=1){ id=linkedlist[cnt1-1]; printf("%05d %d %d\n",node[id].addr,node[id].value,node[id].to); } for(int i=0;i
=1){ id=removelist[cnt2-1]; printf("%05d %d %d\n",node[id].addr,node[id].value,node[id].to); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/chenxiwenruo/p/6102450.html

你可能感兴趣的文章
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
linux 内核参数VM调优 之 参数调节和场景分析
查看>>
HTML+CSS学习笔记(九)
查看>>
笑谈人生的哲理和智慧
查看>>
【BZOJ2286】【SDOI2011】消耗战 [虚树][树形DP]
查看>>
【Foreign】Game [博弈论][DP]
查看>>
3.13上午 听力BLOCK3、4 写作形容词,连字符,名词动化大词
查看>>
pycharm 安装 tensorflow
查看>>
C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
查看>>
一次失败的项目经理招聘经验
查看>>