您的位置:首页 > 理论基础 > 数据结构算法

数据结构问题汇总

2015-06-26 14:12 549 查看

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);

}

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);

3,单向链表逆序

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: