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());
}
}
分享到:
相关推荐
有关单向链表的增删改查,对于单向链表的插入,在固定节点后面插入分为四种情况
定义单向链表,并实现链表的增删改查。并且链表内所有元素不能相同
这是近期自己参考书上和网上资源使用C++编的单向链表,主要包含了链表的增删改查功能,除此之外还有简单的排序功能,代码实现的效果图已经在项目文件夹中了,可以按照效果图进行数据的增删改查等操作,最后也希望对...
用模板实现的单向链表的增删改查的功能,简单实用,只是一个头文件,可适用于各种数据结构和类,是学习模板和单向链表的绝好参考
不使用List,使用泛型类实现单链的增删。
双向链表(Doubly Linked List)是一种常见的数据结构,在单链表的基础上增加了向前遍历的功能。与单向链表不同,双向链表的每个节点除了包含指向下一个节点的指针外,还包含指向前一个节点的指针。
下面小编就为大家带来一篇用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")...
此压缩包为1、无头+单向+非循环链表增删查改实现// 动态申请一个结点// 单链表打印// 单链表尾插// 单链表的头插// 单链表的尾删// 单链表头删// 单链表查找// 单链表在pos位置之后插入x// 单链表删除pos位置之后的...
简单的单向链表,增删查改练习。简单的二叉树练习,适合初学者,简单易懂,非常实用。VS2015工程,可以直接运行。
c语言实现双向链表的 “增删改查显功能
本文研究的主要是Python中实现单向链表的相关内容,具体如下。 什么是链表 链表顾名思义就是~链 链表是一种动态数据结构,他的特点是用一组任意的存储单元存放数据元素。链表中每一个元素成为“结点”,每一个...
1-【了解】线性表的增删改查源代码 /* * 1、创建线性表,并且初始化 * 2、打印线性表 * 3、增、删、改、查 * * 线性表特点: * 1)连续的 --用数组来去表现 * 2)有限的 --设定长度 * */ #include <stdio.h> #include ...
给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据 域中的数据从小到大顺序链接。函数fun的功能是:把形参x的值放入一个新结点 并插入到链表中,插入后各结点仍保持从小到大顺序排列。 请在...
入门第24天写的代码 基于 双向链表和单向链表的 增删查改的 记录航班 添加航班 查找 删除航班啥的小白一个 希望大神不要嘲笑哈哈
实现 增 删 查 改 的单向链表用c语言编写的,分为两个结构体
本代码用于开发数据存储中遇到的链表存储数据的情况,里面有main.c,linklist.c,linklist.h,Makefile4个文件,可以在linux下直接运行测试,也可以直接移植到项目中,代码中包含单向链表的增、删、改、查功能,非常...