1. 程式人生 > >實現兩個資料交換的演算法實現

實現兩個資料交換的演算法實現

1,用記憶體交換的方式寫一個交換兩個資料的巨集

#define <stdio.h>
#include <string.h>

#define swap(a, b) \
{
	char tempBuff[10];
	memcmp(tempBuff, &a, sizeof(a));
	memcpy(&a, &b, sizeof(b));
	memcpy(&b, tempBuff, sizeof(b));
}

2,藉助一箇中間變數交換兩個資料的值

void swap(int *a, int *b)
{
	int temp = 0;
	temp = *a;
	*a = *b;
	*b = temp;
}

引用的方式去處理兩個資料的交換

void swap(int& a, int& b)
{
	int temp = 0;
	temp = a;
	a = b;
	b = temp;
}

3,不借助中間變數,僅藉助運算子去實現兩個資料的交換

void swap(int& a, int& b)
{
	a = a^b;
	b = a^b;
	a = a^b;
}

相關推薦

實現資料交換演算法實現

1,用記憶體交換的方式寫一個交換兩個資料的巨集 #define <stdio.h> #include <string.h> #define swap(a, b) \ { char tempBuff[10]; memcmp(tempB

利用python實現資料夾的同步

其實無論windows還是Linux,簡單地去實現兩個兩個資料夾的同步只需系統自帶的複製命令加引數就可以了。 WINDOWS : xcopy 原始檔夾\* 目標資料夾 /s /e /y Linux : cp -r 原始檔夾/* 目標資料夾 這裡使用python

java版——實現數值交換的四種方式

實現兩個數值交換,最常用的莫過於中間變數法,那是不是還有別的方式呢。請看下文: class Operator { // 實現兩個數值交換的多種方式 public static void main(

PTA 資料結構與演算法題目集(中文)6-7 在一個數組中實現堆疊

6-7 在一個數組中實現兩個堆疊(20 分)本題要求在一個數組中實現兩個堆疊。函式介面定義:Stack CreateStack( int MaxSize ); bool Push( Stack S, E

PTA資料結構與演算法題目集(中文)4-7 在一個數組中實現堆疊 (20分)

本題要求在一個數組中實現兩個堆疊。 函式介面定義: Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, in

如何在不介入第三變量的情況下實現個數的交換

16px bsp file 相同 rate cli 交換 ron eclips 如何在不介入第三個變量的情況下實現兩個數的交換: 1 package myeclipseFiles2; 2 3 public class Operator { 4 5 pu

java實現int數交換

操作 使用 不用 col int 個數 span 定義 交換 普通方法,進階方法,大神方法 1 @Test 2 public void test3(){ 3 int m = 5; 4 int n = 12; 5

Android ContentProvider實現程式間資料共享demo

1、客戶端程式碼: 先實現服務端 SQL建立: public class DBHelper extends SQLiteOpenHelper { // 資料庫名 private static final String DATABASE_NAME = "finch.db"

實現整數變數交換的三種方式

第一種方式(推薦) int temp; temp = x; x = y; y = temp; 第二種方式: 有弊端,有可能會超出int的取值範圍 x = x + y; y = x - y;

實現資料庫之間的資料同步

不同伺服器資料庫之間的資料操作   --建立連結伺服器  exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '遠

不借助第三者實現變數的交換(java&&C)

1.原理:a^b^b = a 2.實現 java: package javaPractice; import java.util.*; public class Exchange { public static void main(String[] args) { Scanne

程式實現整型數值的交換

題目:請寫出一個小程式,實現對兩個整型數值一個和b的交換 思路1:交換兩個數值,最一般的做法,是建立一個臨時變數臨時,這個變數我們需要的不是它具體的值起到什麼作用,而是要借用它所開闢出來的空間,進行被交換變數的暫時存放將一個的值存入臨時,再將b存入一箇中,然後再將溫度裡存的一個的值放入b中,即可實現一個與b

程序實現整型數值的交換

進行 element bsp 問題 info printf lin UNC sof 題目:請寫出一個小程序,實現對兩個整型數值一個和b的交換 思路1:交換兩個數值,最一般的做法,是創建一個臨時變量臨時,這個變量我們需要的不是它具體的值起到什麽作用,而是要借用它所開辟出來的空

核心連結串列實現任意節點交換位置

#include <stdio.h> #include "list.h" //list.h這個檔案需要你自己打造,可以拷貝核心原始碼,也可以參考我的博文 struct data_info { int data; struct list_head list; }; in

用c語言實現陣列中的內容進行交換。(陣列一樣大)

方法一:建立新的陣列。 #include<stdio.h> #include<stdlib.h> int main() { int arr1[5] = { 1, 2, 3, 4, 5, }; int arr2[5] = { 0, 6, 7, 8, 9, }

C++實現超大的字元數字相加的演算法的程式碼

如下資料是關於C++實現兩個超大的字元數字相加的演算法的程式碼。 #include <iostream> #include <string> #include <stack> using namespace std; void deleteLeadingZeros(st

資料結構-鏈式棧實現一個佇列

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node { int data; struct node *nex

資料結構-鏈式佇列實現一個棧

#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node { int data; struct node *next

演算法導論 10.1-2 用一個數組實現

一、題目說明如何用一個數組A[1..n]來實現兩個棧,使得兩個棧中的元素總和不到n時,兩個都不會發生上溯。注意PUSH和POP操作的時間應為O(1)二、思考分別用陣列的兩端作為兩個棧的起點,向中間擴充套

實現程序間資料交換種方法和應用

Windows作業系統是一個多工系統,每個任務都有相應的程序對應。熟悉windows系統的使用者知道,每個程序都有自己獨立的記憶體地址和記憶體空間。這對程序間之間的資料相互訪問和相互交換帶來一定的不便,但是在實際應用中有時要在程序間進行資料交換。windows系統提供了許多方