链表总结

JAVA 简单链表总结

七月13日

  • 1.链表的生成
public class lianxi
{

	public static void main(String[] args)
	{
		zhy m1=new zhy("第一个节点",1);
	       zhy m2=new zhy("第二个节点",2);
	       zhy m3=new zhy("第三个节点",3);
	       zhy m4=new zhy("第四个节点",4);
	       //将节点进行连接
	       m1.next=m2;   //m1的下一个连接的是m2
	       m2.next=m3;
	       m3.next=m4;
	       m4.next=null;
      //遍历链表
	       zhy m=m1;//定义一个
       while(m!=null)
       {
    	   System.out.println(m);
    	   m=m.next;
       }
       
       
    }
}
class zhy
{
    String name;
    int number;
   public zhy next;
    zhy(String name,int number)
    {
        this.name=name;
        this.number=number;
    }
    @Override            //改写toString方法,将类内容显示出来
    public String toString()
    {
       return String.format("(%s,%s)",name,number);
    }
}

  • 2.节点的插入

现在我要插入对象m5

  • 1.可以在最前端插入
package my;
public class lianxi
{

	public static void main(String[] args)
	{
		zhy m1=new zhy("第一个节点",1);
	       zhy m2=new zhy("第二个节点",2);
	       zhy m3=new zhy("第三个节点",3);
	       zhy m4=new zhy("第四个节点",4);
	       zhy m5=new zhy("第五个节点",5);  //新节点m5
	       zhy head=new zhy(" ",0);
	       
	       head.next=m5;
	       m5.next=m1;
	       m1.next=m2;   
	       m2.next=m3;
	       m3.next=m4;
	       m4.next=null;
      //遍历链表
	       zhy m=head.next;//定义一个
       while(m!=null)
       {
    	   System.out.println(m);
    	   m=m.next;
       }
       
    }
}
class zhy
{
    String name;
    int number;
   public zhy next;
    zhy(String name,int number)
    {
        this.name=name;
        this.number=number;
    }
    @Override            //改写toString方法,将类内容显示出来
    public String toString()
    {
       return String.format("(%s,%s)",name,number);
    }
}
    

如果要在制定位置插入节点?(比如要在节点m2之后插入链表)

这就需要设计一个循环,并在循环内部添加一个判断方法。

zhy node=m1;
	       while(node!=null)
	       {
	    	   if(node.number==2)
	    	   {
	    		   m5.next=node.next;    //将m5末端连接到原来m2的后面
	    		   node.next=m5;     //将m2的末端接上m5
	    		   break;
	    	   }
	    	   node=node.next;
	       }
  • 3.节点的删除

例如删除第三个节点

while(node!=null)
	       {
	    	   if(node.number==2)       //判断条件
	    	   {
	    		  prev.next=node.next;   //将node的下一个节点(也就是3)接到node的前一个节点(也就是1)的后面
	    		   break;
	    	   }
	    	   prev=node;            //让prev等于node的前一个节点
	    	   node=node.next;
	       }

以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
链表是一种常用的数据结构,用于存储一系列元素。C语言中,链表是通过指针来实现的,每个节点包含数据和指向下一个节点的指针。 以下是链表的基础知识总结: 1. 链表的定义: ```c struct Node { int data; struct Node* next; }; ``` 其中,data 表示节点存储的数据,next 表示指向下一个节点的指针。 2. 链表的操作: - 创建节点: ```c struct Node* createNode(int data) { struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->data = data; node->next = NULL; return node; } ``` - 插入节点: ```c void insertNode(struct Node* head, int data) { struct Node* node = createNode(data); node->next = head->next; head->next = node; } ``` 其中,head 表示链表头节点。 - 删除节点: ```c void deleteNode(struct Node* head, int data) { struct Node* p = head->next; struct Node* q = head; while (p != NULL) { if (p->data == data) { q->next = p->next; free(p); break; } q = p; p = p->next; } } ``` - 遍历链表: ```c void traverseList(struct Node* head) { struct Node* p = head->next; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); } ``` - 销毁链表: ```c void destroyList(struct Node* head) { struct Node* p = head->next; while (p != NULL) { struct Node* q = p; p = p->next; free(q); } head->next = NULL; } ``` 3. 链表的优缺点: 链表的优点是插入和删除操作的时间复杂度为 O(1),而数组的时间复杂度为 O(n)。但是,链表的缺点是无法随机访问元素,需要遍历整个链表才能找到要查找的元素。此外,链表需要额外的空间来存储指向下一个节点的指针。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值