数据结构问题汇总

1,二分查找

int binarySearch(int array[],int length,int target)//array 为一个排好序的数组  
{  
    if(length/2==0 && array[length/2] != target )return -1;  
    if(array[length/2]==target)return length/2;  
    if(array[length/2]>target])return binarySearch(array[],length/2,target);  
    if(array[length/2]<target])return binarySearch(array[],length/2,length-length/2);  
}  


void stringReverse(char* p1,char* p2)  
{  
    if(p1==p2)return;  
    //swap the value of p1 ,p2  
    *p1=(*p1)+(*p2);  
    *p2=(*p1)-(*p2);  
    *p1=(*p1)-(*p2);  
     if(p1==p2-1)return;  
     else stringReverse(++p1,--p2);  
}  

调用示例:stringReverse(str,str+strlen(str)-1);  


typedef struct Node Node;  
struct Node{  
    int data;  
    Node* next;  
};  
  
Node* reverseLinkList(Node* head){  
    if (head==NULL||head->next==NULL) {  
        return head;  
    }  
    Node* p1 = head;  
    Node* p2 = p1->next;  
    Node* p3 = p2->next;  
    p1->next = NULL;//p1要变成尾指针,所以指向NULL  
    while (p3!=NULL) {  
        p2->next = p1;//p2->next 反向  
        p1=p2;//p1指针向后移动一步  
        p2=p3;//p2指针向后移动一步  
        p3=p3->next;//p3指针向后移动一步  
    }  
    p2->next=p1;//p3指向了NULL,p2反向  
    head=p2;//头指针指向之前的尾指针  
    return head;  
}  

以上转载:http://blog.csdn.net/iukey/article/category/1063274

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值