精华内容
下载资源
问答
  • 单链表中偶数节点的删除

    千次阅读 2018-10-04 19:14:51
    //此时尾指针不可再向前移动,若移动则无法判断当前节点是否为偶数,前几次因为移动指针而出错  }  else  {  pre=pre->next;  }  } }  int main() {  int x;  link h;  s *r,*p;  h=(s*)...

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    typedef struct stu{
    int data;
    struct stu *next;
    }s,*link;
    void output(link h)
    {
        s *p;
        p=h->next;
        while(p!=NULL)
        {
            printf("%d ",p->data);
            p=p->next;
        }
        printf("\n");
    }
    void creat(link h)
    {
      s *pre;
      pre=h;

      while(pre->next!=NULL)
      {
         if((pre->next->data)%2==0)
           {
               pre->next=pre->next->next;//此时尾指针不可再向前移动,若移动则无法判断当前节点是否为偶数,前几次因为移动指针而出错
           }

       else
       {
          pre=pre->next;
       }
      }

    int main()
    {
      int x;
      link h;
      s *r,*p;
      h=(s*)malloc(sizeof(s));
      h->next=NULL;
      r=h;
      while(scanf("%d",&x)!=EOF&&x)
       {
            p=(s*)malloc(sizeof(s));
            p->data=x;
            r->next=p;
            r=p;
       }
       r->next=NULL;
       creat(h);
       output(h);

        return 0;
    }
     

    展开全文
  • 删除单链表中偶数节点

    千次阅读 2011-05-13 15:12:00
    删除链表第2个节点,第4个节点......,即删除所有第偶数个节点 #include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#define LEN 8typedef struct node node_t;struct node{ int val; node_t ...
    题目意思就是:
    删除链表中第2个节点,第4个节点......,即删除所有第偶数个节点
    
       
    #include < stdio.h >
    #include
    < stdlib.h >

    #define LEN 8
    typedef
    struct node node_t;

    struct node{
    int val;
    node_t
    * next;
    };

    // delete even node
    void delete_even_node(node_t * head);

    int main()
    {
    node_t
    ** arr = (node_t ** )malloc( sizeof (node_t * ) * LEN);
    arr[
    0 ] = (node_t * )malloc( sizeof (node_t));
    arr[
    0 ] -> val = 0 ;
    int i;
    for (i = 1 ; i < LEN; i ++ )
    {
    arr[i]
    = (node_t * )malloc( sizeof (node_t));
    arr[i]
    -> val = i;
    arr[i
    - 1 ] -> next = arr[i];
    }
    arr[LEN
    - 1 ] -> next = NULL;
    arr[LEN
    - 1 ] -> val = 7 ;

    delete_even_node(arr[
    0 ]);

    while (arr[ 0 ] != NULL)
    {
    printf(
    " %d\n " , arr[ 0 ] -> val);
    arr[
    0 ] = arr[ 0 ] -> next;
    }

    return 0 ;
    }

    void delete_even_node(node_t * head)
    {
    if (head != NULL)
    {
    // q is after p
    node_t * p = head;
    node_t
    * q = head -> next;

    while (q != NULL)
    {
    p
    -> next = q -> next;
    p
    = q -> next;

    free(q);

    if (p != NULL)
    q
    = p -> next;
    else
    q
    = NULL;
    }
    }
    }

    展开全文
  • 删除单链表偶数节点

    2020-05-22 09:17:02
    =NULL && head->data % 2 == 0){ //不为空且是偶数 q=head; head=head->next; free(q); } if(head==NULL) return NULL; //要删除的结点不是表头结点 p=head; q=head->next; while(q){ if(q->...

    在这里插入图片描述

    #include <stdio.h>
    #include <stdlib.h>
    
    struct ListNode {
        int data;
        struct ListNode *next;
    };
    
    struct ListNode *createlist();
    struct ListNode *deleteeven( struct ListNode *head );
    void printlist( struct ListNode *head )
    {
         struct ListNode *p = head;
         while (p) {
               printf("%d ", p->data);
               p = p->next;
         }
         printf("\n");
    }
    
    int main()
    {
        struct ListNode *head;
    
        head = createlist();
        head = deleteeven(head);
        printlist(head);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    在这里插入图片描述

    /* 你的代码将被嵌在这里 */
    struct ListNode *createlist()
    {
    	struct ListNode *head,*tail,*p;
    	head=tail=NULL;
    	int num;
    	while(scanf("%d",&num) && num!=-1){
    		p=(struct ListNode *)malloc(sizeof(struct ListNode));
    		p->data=num;
    		p->next=NULL;
    		if(head==NULL && tail==NULL){
    			head=tail=p;
    		}
    		else{
    			tail->next=p;
    			tail=p;
    		}
    	}
    	return head;
    }
    struct ListNode *deleteeven( struct ListNode *head )
    {
    	struct ListNode *p,*q;
    	//要删除的结点是表头结点
    	while(head!=NULL && head->data % 2 == 0){	//不为空且是偶数
    		q=head;
    		head=head->next; 
    		free(q);
    	} 
    	
    	if(head==NULL)
    		return NULL;
    	
    	//要删除的结点不是表头结点
    	p=head;
    	q=head->next;
    	while(q){
    		if(q->data%2==0){	//满足条件 删除 
    			p->next=q->next;
    			free(q);
    		}
    		else{				//不满足条件 p结点后移 
    			p=q;
    		}
    		q=p->next;			//保持使 q指向 p 的下一个结点 
    		
    	}
    	return head; 
    } 
    
    展开全文
  • PTA--删除单链表偶数节点(C语言)

    千次阅读 2019-09-22 12:55:58
    本题要求实现两个函数,分别将读入的数据存储为单链表、将链表偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *create...

    题目描述:

    本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:

    struct ListNode {
        int data;
        struct ListNode *next;
    };

    函数接口定义:

    struct ListNode *createlist();
    struct ListNode *deleteeven( struct ListNode *head );

    函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。

    函数deleteeven将单链表head中偶数值的结点删除,返回结果链表的头指针。

    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct ListNode {
        int data;
        struct ListNode *next;
    };
    
    struct ListNode *createlist();
    struct ListNode *deleteeven( struct ListNode *head );
    void printlist( struct ListNode *head )
    {
         struct ListNode *p = head;
         while (p) {
               printf("%d ", p->data);
               p = p->next;
         }
         printf("\n");
    }
    
    int main()
    {
        struct ListNode *head;
    
        head = createlist();
        head = deleteeven(head);
        printlist(head);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */

    输入样例:

    1 2 2 3 4 5 6 7 -1

    输出样例:

    1 3 5 7

    个测试点如下:

    1. sample等价,头尾结点都是奇数
    2. 头尾结点都是偶数
    3. 全是奇数
    4. 全是偶数
    5. 只有一个奇数结点
    6. 只有一个偶数结点

    代码如下:

    struct ListNode *createlist()
    {
        int a,flag;
        flag = 1;
        scanf("%d",&a);
        if(a==-1)
            return NULL;
        struct ListNode *h,*p,*t;
        p = (struct ListNode*)malloc(sizeof(struct ListNode));
        p->data = a;
        p->next = NULL;
        h = p;
        while(flag){
            scanf("%d",&a);
            if(a==-1) break;
            t = (struct ListNode*)malloc(sizeof(struct ListNode));
            p->next = t;
            t->data = a;
            t->next = NULL;
            p = t;
        }
        return h;    
    }
    
    struct ListNode *deleteeven( struct ListNode *head )
    {
        struct ListNode *p,*q,*h;
        h = head;
        p = head;
        q = head->next;
        if(!q){  //只有一个结点
            if(p->data%2)  //如果是奇数结点
                return h;
            return NULL;  //如果是偶数结点
        }
    
        while(q->next){   //判断是否全为偶数结点
            if(p->data%2) 
                    break;
                h = h->next;
                p = p->next;
                q = q->next;
            }
        if(!q->next) return NULL;  //说明全是偶数结点
    
        while(q->next){
            if(q->data%2)
                p = q;
            else
                p->next = q->next;
            q = q->next;
        }
        if(q->data%2==0){   //如果尾结点是偶数结点
            p->next = NULL;
        }
        return h;
    }

     

    展开全文
  • 删除单链表偶数节点PTA

    千次阅读 2019-05-02 10:39:29
    本题要求实现两个函数,分别将读入的数据存储为单链表、将链表偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); ...
  • 删除单链表偶数节点 (20分)

    千次阅读 2019-12-21 14:38:16
    删除单链表偶数节点 (20分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: ...
  • 6-13 删除单链表偶数节点 (20 分) **原创文章,欢迎转载,转载时请附上链接: ** 相似题型: 6-11 单链表结点删除 (20 分) https://blog.csdn.net/weixin_43527871/article/details/89523815 相似题型:6-12 ...
  • 8-6-4 删除单链表偶数节点 (20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义...
  • 删除单链表偶数节点 (15 分)

    千次阅读 2018-11-30 15:34:19
    6-5 删除单链表偶数节点 (15 分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表偶数值的结点删除。链表结点定义如下: struct ListNode {  int data;  struct ListNode *next; }; 函数...
  • 输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表数据的相对次序与原链表一致。 Input 第一行输入整数N;; 第二行依次...
  • 试编写算法,在单向链表中删除所有的偶数元素节点 #include<bits/stdc++.h> #define RESULT int #define OK 1 #define ERROR 0 using namespace std; typedef struct Node { int data; Node* next; }...
  • 算法思想:while 循环 找出最小节点的前驱节点 以及最小值节点 之后删除即可 void Delete_Min(LNode *&head ){ if(head ->next==NULL) return; LNode *pre=head ; //前驱结点 LNode *current=head ...
  • 在带头结点的单链表中删除一个最小值结点的算法。 Node.java /* * 节点类的泛型定义 */ public class Node<T> { T data; Node<T> next; public Node(Node<T> n){ next = n; } public ...
  • public class ListNode { int data;//当前节点的值 ... System.out.println("\n删除偶数节点后,链表为:"); print(node1); } } 转载于:https://www.cnblogs.com/turningli/p/10464553.html
  • 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *next; }; 函数接口定义: struct ListNode *createlist(); ...
  • 题目:删除带头结点的单链表L的结点p,p不是最后一个结点,要求时间复杂度为O(1)。解题思路:如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。现在要求时间复杂度为O(1),因为p不是最后...
  • 移除链表元素删除链表等于给定值val的所有节点示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5此问题想着很简单,删除元素必须用到两个节点,一个节点cur用于遍历...
  • 单链表中有头结点 & 无头结点的各种基本操作(完整代码) 有头结点 #include<stdio.h> #include<malloc.h> //用malloc函数开辟新单元时需用此头文件 typedef int ElemType; typedef struct LNode //...
  • 问题描述:设计一个单链表类的成员函数,实现删除带头结点的单链表中数据域值为x的所有结点的操作,并返回删除的个数 涉及变量:temp:Node型变量,用于结点的删除 position:Node型变量,用于标记temp的前驱结点...
  • 题目:在带头结点的单链表L,删除所有值为X的节点,并释放其空间,假设值为X的节点不唯一 分析: 和上题相似,只是多了一个头结点。另我们可以采取直接遍历的方式进行删除,设置前驱结点,当前节点来保证不锻炼 ...
  • 删除带头结点的单链表最小值结点

    千次阅读 2018-08-29 15:18:20
    删除带头结点的单链表最小值结点 王道19数据结构 P44 删除带头结点的单链表最小值结点(假设最小值结点唯一) 书上给的答案无法应对单链表为空的情况 课本代码 LinkList DelMin(LinkList &amp...
  • 本文将讨论一下关于带头结点的单链表实现按位置取元素和按位置插入元素,在本文,我们规定按位置删除结点的位置 i >= 1,也就是i从1开始。 按位置取元素 1.示意图 2.代码块 elementType getElement(node* L, ...
  • 题目 设计一个算法,将一个头结点为A的单链表(其数据域为整数)分解成两个单链表A和B.使得A链表只含有原来链表data域.../* 将A链表的奇数和偶数分离出来,奇数继续保留在A链表偶数保留在B链表 */ /* *A指的.
  • } 找出最小值结点,如果最小值是奇数,删除该节点 void mini(LNode *L) { LNode *p,*q,*pre,*min; //p用于遍历,,q为当前结点的下一个节点用于比较 //min指向最小值结点,pre指向最小值的前驱节点 p=L->next; ...
  • 建立一个由正整数组成的无序单链表,编写算法实现下列功能:找出最小值结点,且显示该数值;若该数值为奇数,则将其与直接后继结点的数值交换。若为偶数,则将其直接后继结点删除
  • 单链表经典问题3

    2020-09-13 14:22:36
    1.试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点时唯一的) void delete_MinX(linklist& L) { //试编写在带头节点的单链表L中删除一个最小值节点的高效算法(假设最小值节点时唯一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,794
精华内容 1,917
关键字:

删除单链表中偶数元素