zoukankan      html  css  js  c++  java
  • “双向链表的一些基本操作”

    void CreateLink()//头插法建立双向链表节点(逆序存储)
    {
    	node *L,*s;
    	L=new node;
    	L->prior=L->next=NULL;
    	for(int i=0;i<n;i++)
    	{
    		s=new node;
    		s->num=a[i];
    		s->next=L->next;//1先与下一个节点建立联系
    		if(L->next!=NULL)
    			L->next->prior=s;//说明L下面还有节点,可以插入下面的那个节点前面
    		L->next=s;//2上一个节点在与它建立联系
    		s->prior=L;
    	}//最后L是个空节点
    }
    void CreteList()//尾插法建立双向链表(正序)
    {
    	node *L,*s,r;
    	L=new node;
    	L->next=L->prior=NULL;
    	r=L;
    	for(int i=0;i<n;i++)
    	{
    		s=new node;
    		s->num=a[i];
    		r->next=s;
    		s->prior=r;
    		r=s;
    	}
    	s->next=NULL;
    }
    //基本运算,在n之前插入一节点插入数据元素(思路:先找到此时n之前的节点m,然后插入到m之后)(换个思路也可以用于插入到节点m之后)
    bool ListInsert(noed *L,int i,ElemType e)
    {
    	int j=1;//在矛个位置,要插入的位置,找到要插入的位置之前的元素
    	node *p=L,*s;
    	while(j<i&&p!=NULL)
    	{
    		j++;
    		p=p->text;
    	}
    	if(p==NULL)
    		return false;
    	else
    	{
    		s=new node;
    		s->num=e;
    		s->next=p->next;
    		p->next->prior=s;
    		p->next=s;
    		s->prior=p;
    		return true;
    	}
    }
    //在双链表中删除某一个节点i(p之后的一个节点)(思路:要找到p这个节点,进行删除)
    bool ListDeletd(node*L,int i,int e)
    {
    	int j=1;
    	node *p=L,*q;
    	while(j<i&&p!=NULL)
    	{
    		p=p->next;
    		j++;
    	}
    	if(p==NULL)
    		return false;
    	else
    	{
    		q=p->next;
    		/*
    		if(q=NULL)
    		return false;
    		else
    		*/
    		e=q->num;//删除的节点的那个值,(具体分析)
    		p->next=q->next;//借用q(用p->next=p->next->next?)
    		q->next->prior=p;//p->next->prior=p;这句话不对,之前p->next值已经改变了
    		delete q;//q一定是要出现的,因为最后要删除这个节点
    		return true;
    	}
    }
    

  • 相关阅读:
    分页技术-总结
    整合GreyBox放大显示图片
    java web开发 图片上传功能
    我的fckeditor实践
    fckeditor使用(转)
    hibernate主键生成策略(转载)
    JfreeChart使用(转载)
    投票系统开发总结struts2,jfreechart,cookie应用,以及前端技术
    Spring MVC + MyBatis整合(IntelliJ IDEA环境下)
    动态代理
  • 原文地址:https://www.cnblogs.com/sxy201658506207/p/7586264.html
Copyright © 2011-2022 走看看