using System ;
public class LinkedList
{
//嵌套类表示单个节点;
private class Node
{
public Node (object values)
{
item=values ;
}
public object item; //数据域;
public Node next;//指针域;
public override string ToString()
{
return item.ToString ();
}
}
private int count;//记录元素个数;
public int Count
{
get {return this.count ;}
}
private Node head;//头指针;
//①添加元素;
public void Add(object values)
{
Node newNode=new Node (values);
if(head ==null ) //如果头指针为空;
{
head =newNode ;
}
else
{
GetByIndex(count-1).next=newNode; //插到链表结尾;
}
count ++; //链表长度+1;
}
//②在指定索引处插入元素;
public void Insert(int index,object values)
{
Node tempNode;
if(index ==0)
{
if(head ==null )
{
tempNode =new Node (values );
head =tempNode ;
}
}
else
{
Node preNode=GetByIndex(index-1); //找插入节点的前驱;
Node nextNode=preNode.next ; //找插入节点的后继结点;
tempNode =new Node (values);
preNode.next =tempNode;
tempNode.next =nextNode ;
}
count ++;
}
//③删除指定索引元素;
public void RemoveAt(int index)
{
if (index ==0) //删除节点为头指针;
{
head =head.next ;
}
else
{
Node preNode=GetByIndex(index-1);
if(preNode.next ==null)
{
throw new ArgumentOutOfRangeException("index","索引超出范围!");
}
preNode.next =preNode.next.next ;
}
count --;
}
public override string ToString()
{
string s="";
for(Node temp=head; temp!=null; temp=temp.next)
{
s+=temp.ToString ()+" ";
}
return s;
}
private Node GetByIndex(int index)
{
if((index <0)||(index >= this.count ))
{
throw new ArgumentOutOfRangeException("index","索引超出范围!");
}
Node tempNode=this.head ;
for(int i=0;i<index ;i++)
{
tempNode=tempNode.next ;
}
return tempNode ;
}
}
class App
{
static void Main()
{
LinkedList lst=new LinkedList ();
Console .WriteLine("①添加元素:");
lst .Add (0);
lst .Add (1);
lst .Add (2);
lst .Add (3);
Console .WriteLine(lst.ToString());
Console .WriteLine("②在2号位置,添加元素50:");
lst .Insert (2,50);
Console .WriteLine(lst.ToString());
Console .WriteLine("③移除1号元素:");
lst.RemoveAt(1);
Console .WriteLine(lst.ToString());
Console .WriteLine(lst.ToString());
}
}
分享到:
相关推荐
本主题将深入探讨单向链表的增、删、改、查操作。 ### 增加节点 增加节点通常涉及到在链表的特定位置插入新的节点。在单向链表中,插入操作有以下四种常见情况: 1. **头部插入**:在链表的开始处添加新节点。这...
链表的主要类型包括单向链表、双向链表和循环链表等。 ### 二、代码解析 #### 1. 结构体定义 ```c struct Student { char name[12]; char sno[12]; int score; Student* next; }; ``` 这里定义了一个名为`...
定义单向链表,并实现链表的增删改查。并且链表内所有元素不能相同
例如,当你需要存储一组无序且可能频繁增删的元素时,单向链表会是一个不错的选择。 总结起来,Flash AS3.0实现的单向链表是一个很好的学习和实践数据结构的例子,它包含了链表的基本操作,有助于提升对链表的理解...
这是近期自己参考书上和网上资源使用C++编的单向链表,主要包含了链表的增删改查功能,除此之外还有简单的排序功能,代码实现的效果图已经在项目文件夹中了,可以按照效果图进行数据的增删改查等操作,最后也希望对...
单向链表是一种基本的数据结构,它在计算机科学和编程中扮演着重要角色。相比于数组,链表在处理动态数据和内存管理上有着独特的优点。本文将深入探讨单向链表的功能及其实现。 首先,我们要理解单向链表的基本概念...
它提供了基础的增删改查功能,但缺乏类型检查,这在实际应用中可能需要改进。理解和掌握链表的运作原理对于深入理解计算机科学尤其是数据结构至关重要,因为链表是许多高级数据结构如栈、队列和图的基础。
在“TongXunLu.rar_单向链表”这个项目中,我们看到的是利用单向链表来构建一个同学录系统,该系统能够进行信息的增、查、改、删操作,并且具有输出通讯录链表的功能。下面我们将深入探讨单向链表的基本概念、如何用...
在本文中,我们将深入探讨如何使用C++类来实现单向链表的基本操作,包括增删查和反转。单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。下面我们将按照文章的结构详细...
* 单向链表增删改查操作 * */ public class LinkTest { public static void main(String[] args) { Link l=new Link(); l.addNode("A"); l.addNode("B"); l.addNode("C"); l.addNode("D"); l.addNode("E")...
通过这些操作,可以完成对于链表节点的增删查改等一系列动作,满足了描述中提到的排序、增加、查找和删除的需求。 最后,描述中还提到“需要的朋友可以参考一下”,意味着以上的代码片段可以作为一个示例,供开发者...
本文将深入探讨如何使用C语言来实现单向链表,并扩展到实现双向链表的“增删改查显”功能。 首先,让我们了解链表的基本概念。链表是一种线性数据结构,与数组不同,它在内存中不是连续存储的。每个链表节点包含两...
此压缩包为1、无头+单向+非循环链表增删查改实现// 动态申请一个结点// 单链表打印// 单链表尾插// 单链表的头插// 单链表的尾删// 单链表头删// 单链表查找// 单链表在pos位置之后插入x// 单链表删除pos位置之后的...
本主题聚焦于C语言实现的单双向链表,包括链表的基本操作:增、删、改、查和排序。以下是这些核心知识点的详细说明。 首先,链表是一种动态数据结构,它不像数组那样在内存中连续存储元素,而是通过节点间的指针...
链表允许动态地添加或删除节点,适合图书信息的增删改查操作。 3. 结构体:C语言中的结构体用于组合多种类型的数据,这里用来定义图书节点。结构体可能包含书名(char数组)、作者(char数组)、出版年份(int型)...
链表的主要操作有增、删、查、改。在单向链表中,插入操作通常涉及找到插入位置然后修改前后节点的指针;删除操作需要找到待删除节点并调整相邻节点的指针;查找操作则需遍历链表直至找到目标;修改操作则直接对找到...
链表的增删效率较快,需要修改前一个元素的指针即可,而数组的增删效率较慢,需要移动修改元素的所有元素。 五、访问方式 链表的访问方式是顺序访问,不能随机访问,而数组可以随机访问其中的元素。 六、空间的...
本文研究的主要是Python中实现单向链表的相关内容,具体如下。 什么是链表 链表顾名思义就是~链 链表是一种动态数据结构,他的特点是用一组任意的存储单元存放数据元素。链表中每一个元素成为“结点”,每一个...