把一個連結串列的奇數和偶數分開
給你一個單鏈表,修改此單鏈表,使得前面是偶數,後面是奇數。偶數間的相對順序不變,奇數間的相對順序不變。返回修改後的單鏈表的頭節點。
例如:
Input: 17->15->8->12->10->5->4->1->7->6->NULL
Output: 8->12->10->4->6->17->15->5->1->7->NULL
ListNode* divideList(ListNode* head) { if (head == NULL) return head; ListNode *p1 = head; ListNode *p2 = NULL; while (p1 && p1->data % 2 == 0) p1 = p1->next; if (p1 == NULL) return head; p2 = p1->next; while (p2) { if (p2->data % 2 == 0) { swap(p2->data, p1->data); p1 = p1->next; } p2 = p2->next; } return head; }
相關推薦
把一個連結串列的奇數和偶數分開
給你一個單鏈表,修改此單鏈表,使得前面是偶數,後面是奇數。偶數間的相對順序不變,奇數間的相對順序不變。返回修改後的單鏈表的頭節點。例如:Input: 17->15->8->12->10->5->4->1->7->6->
c語言 將一個數組中的奇數和偶數分開放在一起
在一個數組中的元素大多奇數和偶數是混在一起的,而將陣列中元素奇數和偶數分開存放則是我們要解決的問題。 將奇數和偶數分開存放然後打印出來的思路是先建立兩個空間,將奇數和偶數分別存放起來,然後
已知兩個連結串列head1 和head2 各自有序,請把它們合併成一個連結串列依然有序。使用非遞迴方法以及遞迴方法。
首先介紹非遞迴方法。因為兩個連結串列head1 和head2都是有序的,所以我們只需要找把較短連結串列的各個元素有序的插入到較長的連結串列之中就可以了。 原始碼如下: 1 node* insert_node(node *head, node *item) //head != NULL 2 { 3 node
設計演算法將一個帶頭結點的單鏈表A分解為兩個具有相同結構的連結串列B和C,其中B表的結點為A表中值小於零的結點,而C表的結點為A表中值大於零的結點(連結串列A中的元素為非零整數,要求B、C表利用A表的結點)。
語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li
已知兩個連結串列A和B分別表示兩個集合,其元素遞增排列。請設計一個演算法,用於求出A與B的交集,並存放在A連結串列中。
語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li
一個學生的資訊是:姓名,學號,性別,年齡等資訊,用一個連結串列,把這些學生資訊連在一起, 給出一個age, 在些連結串列中刪除學生年齡等於age的學生資訊。
#include <stdio.h> #include <conio.h> #include <malloc.h> struct student { char name[12]; int number; char genda;
每日一道Leetcode演算法——如何判斷一個連結串列是否有環,並求出環的入口和環的長度——
判斷一個連結串列是否有環有兩種辦法: 一種最經典是定義兩個指標,一個指標每次向前走一步,一個指標每次向前走兩步,如果兩個指標最終重合。則證明有環。 一種是建立一個hash表,將每次走過的結點放入hash表中,如果結點在hash表中,則表示存在環。 判斷連結串列的入口: 假設兩個指標第
一個學生的資訊是:姓名,學號,性別,年齡等資訊,用一個連結串列,把這些學生資訊連在一起, 給出一個age, 在 連結串列中刪除學生年齡等於age的學生資訊。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXSIZE 10 type
把一個十進位制轉化為二進位制數並且把二進位制數的奇數位偶數位分別輸出
#include<stdio.h> #include<stdlib.h> int main() {unsigned int i;int s = 0 , b = 0 , j , k = 1,arrjishu[32],arroushu[32];scanf
python入門:輸出1-100之內的所有奇數和偶數
utf env false 報錯 pytho 賦值 1-1 pass 所有 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #輸出1-100之內的所有奇數和偶數 4 """ 5 給start賦值等於1,whi
while循環練習-打印奇數和偶數、死循環
div pre bsp int print ron span nbsp blog 打印出0-10之間的所有偶數: 方法1: 1 num = 2 2 while num < 10: 3 print(num) 4 num += 2 方法2: 1 nu
JS中: 1-100之間的奇數和偶數和;求周一到周末的工作日和休息日(switch的方法)
CA 判斷 length switch AS div 提示 fault eve // 1-100之間的奇數和偶數和 先給兩個裝和的變量 let odd = 0; let even = 0; for (i = 1; i<= 100; i++) { if (i
python打印10以內的奇數和偶數
ces watermark odin col 奇數 http cto fff usr 腳本內容#!/usr/bin/env python#-- coding: utf-8-- for i in range(1,10):if i % 2 == 1:print(‘%d 是一個奇
已知兩個連結串列A和B分別表示兩個集合,其元素遞增排列。請設計演算法求出兩個集合A和B的差集(即僅由在A中出現而不在B中出現的元素所構成的集合),並以同樣的形式儲存,同時返回該集合的元素個數。
語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li
不屬於真正的連結串列去重,未對原來的連結串列進行修改,而是另外建立了一個連結串列
來自:https://blog.csdn.net/futureflyme/article/details/72780789 package interview; import java.util.*; //定義節點結構 class Node { int data; N
2.7 判斷一個連結串列是否為迴文結構
【題目】: 給定一個連結串列的頭結點head,請判斷該連結串列是否為迴文結構 例如: 1 --> 2 --> 1, 返回true 1 --> 2 --> 2 --> 1, 返回true 15 --> 6 --> 15, 返回true
[leetcode]114. Flatten Binary Tree to Linked List將二叉樹展成一個連結串列
Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1 / \ 2 5 / \ \ 3 4 6 The flattened
Python手寫模擬單向連結串列物件和棧物件
單向連結串列: class error(Exception): def __init__(self,msg): super(error,self).__init__() self.msg=msg def __str__(self):
shell:計算1-100以內奇數和偶數的和
計算1-100以內奇數和偶數的和 考慮使用for迴圈來進行遍歷1-100以內 for I in {1..100} 對於奇偶數的取法最簡單的是 I=$[$I+2] 但我們採用: YS=$[$I%2] so.整段程式碼如下: 1 #! /bin/bash 2 for I
【劍指offer】輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList
劍指offer第三題 題目如下 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList 具體程式碼實現如下: 下面展示兩種程式碼實現,思想都是基於遞迴,遍歷到連結串列末尾,由低向上儲存資料。 1.相互呼叫遞迴 import java.util.Arra