精华内容
下载资源
问答
  • /** * @author tj * 描述:创建一个带头结点的单链表在单链表中删除值相同的多余结点。 输入:从键盘上输入数据元素个数n和对应n个元素。 输出:输出删除多余结点的单链表序列。 输入样例:6 3 1 3 4 4 5 输出样例...

    /**
     * @author tj
     * 描述:创建一个带头结点的单链表,在单链表中删除值相同的多余结点。
        输入:从键盘上输入数据元素个数n和对应n个元素。
        输出:输出删除多余结点的单链表序列。 
        输入样例:6 3 1 3 4 4 5
        输出样例:3 1 4 5
     */
    public class LinkedList {
        
        private int value;
        private LinkedList next;
        
        public static void main(String[] args){
            Scanner cin = new Scanner(System.in);
            while(cin.hasNext()){
                int n = cin.nextInt();
                LinkedList li = new LinkedList();
                for(int i=0;i<n;i++){
                    if(i==0){
                        li.value = cin.nextInt();
                    }else{
                        li.create(cin.nextInt());
                    }
                }
                
                li.list();
            }
        }

        private void remove() {
            // TODO Auto-generated method stub
        }
        
        private void list(){
            if(this!=null){
                System.out.println(this.value);
                if(this.next!=null){
                    this.next.list();
                }
            }
        }

        private void create(int nextInt) {
            // TODO Auto-generated method stub
            if(this.next==null){
                this.next = new LinkedList();
                this.next.value = nextInt;
            }else{
                this.next.create(nextInt);
            }
        }

    }
     

    转载于:https://my.oschina.net/u/3505059/blog/909075

    展开全文
  • 在单链表中删除指定的节点

    千次阅读 2017-11-06 16:44:33
    //在单链表中删除指定的节点 public class delNode{ //节点的定义 public static class Node{ int value; Node next; public Node(int data) { this.value=data; } } //一、变量法存储 publi

    import java.util.*;
    
    
    //在单链表中删除指定值的节点
    public class delNode{
    	
    	//节点的定义
    	public static class Node{
    		int value;
    		Node next;
    
    		public Node(int data)
    		{
    			this.value=data;
    		}
    	}
        //一、变量法存储
    	public static Node DelNode(Node head,int num)
    	{
    		if(head==null)
    		{
    			return head;
    		}
    		//找到第一个不等于num的节点作为新的头结点
    		while(head!=null)
    		{
    			if(head.value!=num)
    			{
    				break;
    			}
    			head=head.next;
    		}
    		Node pre=null;
    		Node cur=head;
    		
    		while(cur!=null)
    		{
    		
    			if(cur.value==num) //删除节点cur
    			{
    				pre.next=cur.next;
    				cur=cur.next;
    			}else
    			{
    				pre=cur;
    				cur=cur.next;
    			}
    			
    		}
    
    		return head;
    	}
        //二、用对列、栈方法存储
        public static Node DelNode2(Node head,int num)
        {
        	if(head==null)
    		{
    			return head;
    		}
    		Stack<Node>stack=new Stack<Node>(); //栈存储
    		//Queue<Node>queue=new LinkedList<Node>(); //队列存储
    		while(head!=null)
    		{
    			if(head.value!=num)
    			{
    				stack.push(head);
    				//queue.add(head);
    			}
    			head=head.next;
    		}
    		/*
    		//获取队列第一个节点作为新的头结点
            if(!queue.isEmpty())
            {
            	System.out.println(queue.peek().value);
            	head=queue.poll();
            }
            Node q=head;
    		//重新组成新的链表
    		while(!queue.isEmpty())
    		{
    			
    			System.out.println(queue.peek().value);
    			q.next=queue.poll();
    			q=q.next;
    		}
    		*/
         
    		//栈存储
    		while(!stack.isEmpty())
    		{
    			stack.peek().next=head;
    			head=stack.pop();
    			
    		}
    	
    		return head;
    
        }
    
        //打印链表
        public static void PrintList(Node head){
    
            while(head!=null)
            {
            	System.out.print(head.value+" ");
            	head=head.next;
            }
            System.out.println();
        }
    	public static void main(String[]args)
    	{
    		//System.out.println("Hello");
    		Node node=new Node(1);
    		node.next=new Node(2);
            node.next.next=new Node(3);
            node.next.next.next=new Node(4);
    
            PrintList(node);
            //Node mode=DelNode(node,1);
            Node mode=DelNode2(node,1);
            PrintList(mode);
    
    	}
    }


    展开全文
  • 删除单链表中最大元素(唯一) 用设定四个指针,两个指针做最大的标记,两个指针遍历单链表。因为要删除单链表的元素 必须找到它的前置结点,所以有两个指针是指向最大元素的前置结点。 void ListDelnode(Linknode...

    删除单链表中最大元素(唯一)

    用设定四个指针,两个指针做最大值的标记,两个指针遍历单链表。因为要删除单链表的元素 必须找到它的前置结点,所以有两个指针是指向最大元素的前置结点。

    void ListDelnode(Linknode *L)
    {
         Linknode *p=L->next,*pre=L;,*maxp,*maxpre;
         maxp=p;
         maxpre=pre;
         if(p!=NULL)
         {
           while(p->data>maxp->data)
           {
             maxp=p;
             maxpre=pre;//更新maxp maxpre
            
           }
         pre=p;
         p=p->next;//p pre 前进
      }
      maxpre->next=maxp->next;//删除maxp
      free(maxp);//释放它
    }
    展开全文
  • 代码如下: typedef int datatype; typedef struct node{datatype data;struct node *next}lklist; void del(lklist *head) { lklist *p,*q,*s; p=head->next; while(p!=0 &&... q...

    代码如下:

    typedef int datatype;
    typedef struct node{datatype data;struct node *next}lklist;
    void del(lklist *head)
    {
    	lklist *p,*q,*s;
    	p=head->next;
    	while(p!=0 && p->next!=0)
    	{
    		s=p;
    		q=p->next;
    		while(q!=0)
    		{
    			if(p->data==q->data)
    			{
    				s->next=q->next;
    				free(q);
    				q=s->next;
    			}else{
    				s=q;
    				q=q->next;
    			}
    		}
    		p=p->next;
    	}
    }
    
    展开全文
  • typedef struct LNode { ElemTpye data; struct LNode *next; }LNode,*LinkList; LinkList Del_Com(LinkList &L) { LNode *p,*q,*s; for(p=L->next;p!=NULL;p=p->next) ...data==p->.
  • //在单链表中删除指定的节点 //1.利用栈 public Node removeValue(Node head,int num){ Stack&lt;Node&gt; stack=new Stack&lt;Node&gt;(); while(head!=null){ if(head.value!=num){ stack....
  • DelElem(L,a)的功能是删除以L为首结点指针的单链表中所有为a的结点。同理,DelElem(L->next,a)则删除以L->next为首结点指针的单链表中所有等于x的结点。因此Delete即为删除单链表中特定结点的递归函数...
  • 递增有序的单链表中删除值介于MINK和MAXK之间的.cpp
  • 设计在单链表中删除值相同的多余结点算法。

    万次阅读 多人点赞 2019-01-15 17:21:29
    //s指向要删除结点的前驱 for(q=p->next;q!=NULL; ) { if(q->data==p->data) { s->next=q->next; free(q); q=s->next; } else { s=q; q=q->next; } } } } 二...
  • val时,此时要删除q所指向的节点,所以需要一个s指针记录q,防止发生断链。 struct node { int val; node *next; }; void delDuplication(node *head) { for (node *p=head->next; p; p->next) { ...
  • 题目:在单链表中删除指定的节点   方法一:利用一个栈结构。   class Node{ Integer value; public Node next; public Node(Integer data){ this .value = da...
  • 删除单链表中特定

    2013-08-19 11:18:08
    #include using namespace std; typedef struct Node { int val; Node *next; }LST; LST *mycreat(int n) { LST *head=NULL,*p=NULL,*sec=NULL; head=(LST*)malloc(sizeof(LST)); p=head;... in
  • 设计一个递归算法,删除不带头结点的单链表L所有为x的结点。 算法思路: 遍历该单链表,找到为X的结点删除该点处的结点使p=p->next; 若无为X的结点,则返回原单链表即可。 代码如下: void Del(LinkList ...
  • 先对链表进行排序在删除数相等的结点: 已知单链表的无头节点head void sortDel() //排序+删除 {  pStu p, q, temp1;  int temp;  p = head;  for( p ; NULL != p->Next ; p = p->Next )  {
  • //删除相同的节点 { s -> next = q -> next ; free ( q ) ; q = s -> next ; } else { //p的和q的不相同时的执行步骤 s = q ; q = q -> next ; } } } LNode * ...
  • 删除单链表中重复的

    千次阅读 2015-01-13 10:54:22
    题目:删除带头结点的单链表中重复的元素(即让每种的元素只有一个) 解题思路: 用一个动态辅助存储数组,每次要向辅助数组放入元素时,让辅助数组的长度加1,最长时与单链表一样长,设一个指针p,让它...
  • #include #include  typedef struct node{  int data;  struct node *next;  } LinkList;  LinkList* initialList(LinkList *linkList){  linkList = NULL;... int my
  • (203)-(Remove Linked List Elements )-(在单链表中删除值为给定的所有节点)-(头尾的判断) //在单链表中删除值为给定的所有节点 public class Solution { //尽量先不用递归,因为我已经理不清...
  • 删除链表等于给定 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 思路:有两种解题方式,一种是带虚拟头节点的单链表,另一种是不带虚拟节点...
  • 试编写带头结点的单链表中删除一个最大结点的高效算法。 代码实现: // 带头节点的单链表中删除一个最大结点 #include <stdio.h> #include <stdlib.h> using namespace std; // 单链表结构 ...
  • 删除单链表中所有为x的元素

    万次阅读 2016-04-06 22:19:43
    首先,我们先考虑第一种情况,就是说值删除第一个值为x的元素,这个比较简单, 只需要挨个比较x和链表节点的值,找到值相同的节点的前一个就可以删除这个节点了。 然后我们可以考虑两种办法第一种就是递归的去删除,...
  • 算法总结之 在单链表中删除指定的节点 给定一个链表的头节点head和一个整数num,请实现函数将num的节点全部删除 方法一 利用栈或者其他容器收集的方法 时间复杂度O(N) 额外空间复杂度O(N) ...
  • 要求:设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其可以和表的元素相同,也可以不同 )。 [题目分析] 分别查找第一个>mink的结点和第一个 ≥maxk的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,334
精华内容 19,333
关键字:

在单链表中按值删除