zoukankan      html  css  js  c++  java
  • 数据结构与算法面试题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 ",p->data); p=p->next; } printf(" "); } //创建链表, node* creatLink(){ node *l=new node(); node *r=l; int x; printf("请输入链表,ctrl+z结束输入 "); 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; }
  • 相关阅读:
    c# 虚拟路径转换为绝对路径
    Java基础——封装
    作为测试人,如何优雅的查看Log日志?
    学习整理
    记一次DataNode慢启动问题
    记一次DataNode慢启动问题
    记一次DataNode慢启动问题
    DataNode迁移方案
    C++学习笔记-模板
    C Primer Plus之指针
  • 原文地址:https://www.cnblogs.com/wabi87547568/p/5271925.html
Copyright © 2011-2022 走看看