java 链表的基本操作_【数据结构】Java语言描述-单链表的基本操作

单链表是数据结构中以动态结构存储的线性结构,在Java语言中,一般用本类对象引用的方式在内存中将一组相同类型的对象存储,熟悉单链表的基本操作有助于灵活解决此类算法问题。

1.单链表中的节点可以用节点类型描述如下:

public class Lnode{

public char data;

public Lnode next;

}

2.单链表可以按如下的类进行封装:

public class LinkedList{

Lnode h = null;

public LinkedList(){...}

public insertElement(char ch,int i){...}

//...省略方法

}

3.头插法建立单链表

public LinkedList(String str){

h = new Lnode;

h.next = null;

int i = 0;

Lnode p;

char ch;

while(i

ch = str.charAt(i);

p = new Lnode();

p.data = ch;

p.next = h.next;

h.next = p;

i++;

}

}

4.尾插法建立单链表

public LinkedList(String str){

h = new Lnode();

h.next = null;

char ch;

Lnode p;

Lnode t = h;

int i = 0;

while(i

ch = str.charAt(i);

p = new Lnode;

p.data = ch;

p.next = null;

t.next = p;

t = p;

i++;

}

}

5.求单链表的长度

public int size(){

int i = 0;

Lnode p = h.next;

while(p!=null){

i++;

p = p.next;

}

return i;

}

6.1 在单链表某节点之后插入新节点

public void insertElementAfter(Lnode p,char ch){

Lnode s = new Lnode();

s.data = ch;

s.next = p.next;

p.next = s;

}

6.2 在单链表第i个元素之前插入一个元素

public int insertElementAt(int i,char ch){

Lnode p;

int k = 0;

p = h.next;

while(p!=null&&k

p = p.next;

k++;

}

if(p!=null){

Lnode s = new Lnode();

s.data = ch;

s.next = p.next;

p.next = s;

return 1;

}

return 0;

}

7.删除单链表中某节点的后继节点

public void remove(Lnode p){

if(p.next!=null){

Lnode s = p.next;

p.next = s.next;

s = null;

}

}

8.1 按值查找

public Lnode search(char ch){

Lnode p = h.next;

while(p!=null&&p.data!=ch){

p = p.next;

}

return p;

}

8.2 按位置查找

public Lnode get(int i){

Lnode p = h.next;

int k = 0;

while(p!=null&&k

p = p.next;

k++;

}

if(i==k)

return p;

else

return null;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统的设计与实 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统的设计与实 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的男女比例。 男女比例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值