您的位置:首页 > 编程语言 > C语言/C++

PTA 1075 链表元素分类 (c++)

2019-08-18 08:25 861 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_44622401/article/details/99700981

1075 链表元素分类 (25 分)


思路:首先建立一个结构体包含数据和下个地址,还有大小为3得vector数组。然后建立一个结构体数组,下标即为当前结点得地址。这样其实就可以用结构体数组来模拟链表进行一系列操作。然后定义一个变量并赋给它首地址,开始遍历到当它不等于-1(即不是链表尾),然后对每一次循环时得存储得数据进行判断 分为data<0 k>data>0和data>k 三个部分分别存储到v[0]
v[1] v[2]当中(个人学艺不精,参考得柳神得代码,没想到vector还有这种操作。。。。。)代码如下:

">#include<vector>
using namespace std;
struct node{
int data,next;
}list[100000];
vector<int>v[3];
int main()
{
int start,n,k,a;
cin>>start>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a;
cin>>list[a].data>>list[a].next;
}
int p=start;
while(p!=-1)
{
int data=list[p].data;
if(data<0)	v[0].push_back(p);
else if(data>=0&&data<=k)	v[1].push_back(p);
else	v[2].push_back(p);
p=list[p].next;
}
int flag=0;
for(int i=0;i<3;i++)
for(int j=0;j<v[i].size();j++)
if(!flag)
{
printf("%05d %d ",v[i][j],list[v[i][j]].data);
flag=1;
}
else	printf("%05d\n%05d %d ",v[i][j],v[i][j],list[v[i][j]].data);
printf("-1");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: