数据结构与算法面试题80道(24)

Posted 要知道明天会更好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法面试题80道(24)相关的知识,希望对你有一定的参考价值。

24:

链表操作,

(1).单链表就地逆置,

(2)合并链表

 

 

#include<stdio.h>

struct node{
    int data;
    node* next;
};

//就地逆转
node * reverseLink(node* head){
    node *p,*r;

    p=head->next;
    head->next=NULL;

    while(p){
        r=p->next;
        p->next=head->next;
        head->next=p;
        p=r;
    }

    return head;
}

//合并链表 node
* mergeLink(node *a,node *b){ node *head,*p; head=a; a=a->next; b=b->next; p=head; while(a&&b){ if(a->data>b->data){ p->next=b; p=p->next; b=b->next; }else{ p->next=a; p=p->next; a=a->next; } } while(a){ p->next=a; p=p->next; a=a->next; } while(b){ p->next=b; p=p->next; b=b->next; } return head; } //打印链表 void printfLink(node *l){ node *p=l->next; while(p!=NULL){ printf("%d\t",p->data); p=p->next; } printf("\n"); } //创建链表, node* creatLink(){ node *l=new node(); node *r=l; int x; printf("请输入链表,ctrl+z结束输入\n"); while(~scanf("%d",&x)){ node* p=new node(); p->data=x; p->next=NULL; r->next=p; r=r->next; } return l; } int main(){//test node *a=NULL; a=creatLink(); printfLink(a); node *b=NULL; b=creatLink(); printfLink(b); node *c=NULL; c=mergeLink(a,b); printfLink(c); reverseLink(c); printfLink(c); return 0; }

 

以上是关于数据结构与算法面试题80道(24)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法面试题80道(28)

数据结构与算法面试题80道

数据结构与算法面试题80道(10)

数据结构与算法面试题80道

数据结构与算法面试题80道(30)

数据结构与算法面试题80道