由于使用宏,还是有要引入几个int类型的临时变量及指针,没有完全发挥xor操作的速度,改用块汇编实现.
只是替换了三处,测试与用c实现的结果一样.速度及空间应该都有改良. 【程序编程相关:STL 简介,标准模板库(zt)】 【推荐阅读:员工忠诚度的全程管理】#include <stdio.h> 【扩展信息:C语言的编程风格】 #include <stdlib.h>#define swap(a,b) { \
a=a^0xffffffff; \ b=b^a; \ a=a^b; \ b=b^0xffffffff; \ b=b^a; \ } #define swap_point(pa,pb) {\ int h,t; \ plinklist ph,pt; \ h=(int)pa; \ t=(int)pb; \ ph = (plinklist)h; \ pt = (plinklist)t; \ swap(h,t); \ pa = (plinklist)h; \ pb = (plinklist)t; \ }typedef struct taglinklist
{ int data; struct taglinklist *next; } linklist , *plinklist ; int main(int argc, char* argv[]) { /* int a=10,b=99; _asm { mov eax,a mov ebx,b xor ebx,eax xor eax,ebx xor ebx,eax mov a,eax mov b,ebx } printf("a=%d , b=%d \n",a,b); */int count,i;
plinklist head,tmpnode,tail; head=null; // construct linklist. ... 下一页