using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 集合遍历时删除或增加元素
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private LinkedList<int> list = new LinkedList<int>();
//初始化,添加0-29的整数进入链表
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 30; i++)
{
this.list.AddLast(i);
}
}
//遍历链表,做如下操作:
//遇到能被3整除的,就在该链表后增加一个0元素,遇到能被2整除的就删除该元素
private void button2_Click(object sender, EventArgs e)
{
LinkedListNode<int> nodeNow = this.list.First;//链表第一个元素
LinkedListNode<int> nodeLast = this.list.Last;//原链表的最后一个元素,循环结束的标记
LinkedListNode<int> nodeTmp;//临时结点
//循环结束的条件是,等当前结点是原链表的最后一个结点
while (nodeNow != nodeLast)
{
//如果能被3整除时,则在链表后加一个0
if (nodeNow.Value % 3 == 0)
{
this.list.AddLast(0);
}
//如果能被2整除,则删除该元素
if (nodeNow.Value % 2 == 0)
{
//如果nodeNow被删除了,那么一定不能用Next获取下一个要判断的元素
//因为已经自动向下一个移动了,这是就要在删除nodeNow之前,
//获取它的Next,赋给nodeTmp,待nodeNow删除之后,再把nodeTmp的内存赋给nodeNow
nodeTmp = nodeNow.Next;
this.list.Remove(nodeNow);
nodeNow = nodeTmp;
}
else
{
//如果不能被2整除,则在链表中保留该元素,并获得下一个并进行判断
nodeNow = nodeNow.Next;
}
}
//最后不要忘记对nodeLast(原链表最后一个元素)本身进行处理,上面的while循环没有包括这个nodeLast
if (nodeNow.Value % 3 == 0)
{
this.list.AddLast(0);
}
if (nodeNow.Value % 2 == 0)
{
this.list.Remove(nodeNow);
}
}
//测试结果
private void button3_Click(object sender, EventArgs e)
{
foreach (int i in this.list)
{
Console.WriteLine(i);
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 集合遍历时删除或增加元素
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private LinkedList<int> list = new LinkedList<int>();
//初始化,添加0-29的整数进入链表
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 30; i++)
{
this.list.AddLast(i);
}
}
//遍历链表,做如下操作:
//遇到能被3整除的,就在该链表后增加一个0元素,遇到能被2整除的就删除该元素
private void button2_Click(object sender, EventArgs e)
{
LinkedListNode<int> nodeNow = this.list.First;//链表第一个元素
LinkedListNode<int> nodeLast = this.list.Last;//原链表的最后一个元素,循环结束的标记
LinkedListNode<int> nodeTmp;//临时结点
//循环结束的条件是,等当前结点是原链表的最后一个结点
while (nodeNow != nodeLast)
{
//如果能被3整除时,则在链表后加一个0
if (nodeNow.Value % 3 == 0)
{
this.list.AddLast(0);
}
//如果能被2整除,则删除该元素
if (nodeNow.Value % 2 == 0)
{
//如果nodeNow被删除了,那么一定不能用Next获取下一个要判断的元素
//因为已经自动向下一个移动了,这是就要在删除nodeNow之前,
//获取它的Next,赋给nodeTmp,待nodeNow删除之后,再把nodeTmp的内存赋给nodeNow
nodeTmp = nodeNow.Next;
this.list.Remove(nodeNow);
nodeNow = nodeTmp;
}
else
{
//如果不能被2整除,则在链表中保留该元素,并获得下一个并进行判断
nodeNow = nodeNow.Next;
}
}
//最后不要忘记对nodeLast(原链表最后一个元素)本身进行处理,上面的while循环没有包括这个nodeLast
if (nodeNow.Value % 3 == 0)
{
this.list.AddLast(0);
}
if (nodeNow.Value % 2 == 0)
{
this.list.Remove(nodeNow);
}
}
//测试结果
private void button3_Click(object sender, EventArgs e)
{
foreach (int i in this.list)
{
Console.WriteLine(i);
}
}
}
}
//两个链表的合并
LinkedList<int> list = new LinkedList<int>();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
LinkedList<int> list2 = new LinkedList<int>();
for (int i = 10; i < 20; i++)
{
list2.Add(i);
}
list.Add(list2.Head);
Node<int> n = list.Head;
while(n!=null)
{
Console.WriteLine(n.Data);
n = n.Next;
}
Console.ReadLine();
Console.WriteLine(list.GetLength());
Console.ReadLine();
//两个链表的合并
LinkedList<int> list = new LinkedList<int>();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
LinkedList<int> list2 = new LinkedList<int>();
for (int i = 10; i < 20; i++)
{
list2.Add(i);
}
list.Add(list2.Head);
Node<int> n = list.Head;
while(n!=null)
{
Console.WriteLine(n.Data);
n = n.Next;
}
Console.ReadLine();
Console.WriteLine(list.GetLength());
Console.ReadLine();
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有