面试题26

来源:互联网 发布:mac开机只有客人用户 编辑:程序博客网 时间:2024/06/06 00:13

反转链表:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点

#include<stdio.h>#include<assert.h>typedef struct node {    int data;    struct node *next;}Lnode;Lnode* InitList(int *A, int len) {    assert(A&&len);    Lnode *L=NULL ,*p=NULL;    for (int i = 0; i < len; i++) {        Lnode *tmp = (Lnode*)malloc(sizeof(Lnode));        tmp->data = A[i];        if (i == 0)            L = p = tmp;        else {            p->next = tmp;            p = p->next;        }    }    p->next = NULL;    return L;}Lnode* ReverseList(Lnode *L) {    Lnode *Lpre = NULL;    Lnode *LRvsHead = NULL;    Lnode *p = L;    while (p!= NULL) {        Lnode *pnext = p->next;        if (pnext == NULL) {            LRvsHead=p;        }        p->next = Lpre;  //p的下一个结点是Lpre        Lpre = p;        p = pnext;    }    return LRvsHead;}int main() {    int A[] = { 1,2,3,4,5 };    int len = sizeof(A) / sizeof(A[0]);    Lnode *LinkA=InitList(A, len);  //构建一个链表    Lnode *RvsHead = ReverseList(LinkA);}
0 0
原创粉丝点击