您的位置:首页 > 职场人生

剑指offer 面试题16

2018-03-03 22:51 260 查看
面试题16:反转链表题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后该链表的头结点,链表定义如下:Struct ListNode{   Int      M_nKey;   ListNode* m_pNext;}我的代码如下:#include<stdio.h>#include<assert.h>#include<stdlib.h> typedef struct Node{    int data;//数据域    struct Node *next;//指向下一个节点的地址}Node,*List;//List== Node *  //单链表以NULL结尾void InitList(Listplist){    assert(plist != NULL);    if(plist == NULL)    {       return;    }     plist->next = NULL;} ListBuyNode(int val){    Node *p = (Node *)malloc(sizeof(Node));     p->data = val;    //p->next = NULL;     return p;} //头插void Insert_Head(Listplist ,int val)  {    Node *p = BuyNode(val);        p->next = plist->next;//4    plist->next = p;//3}  //从头到尾打印链表void Show(List plist){    Node*p=plist->next;    for( ; p!= NULL ;p=p->next)    {       printf("%d   ",p->data);    }    printf("\n");} void Reverse(List plist){    Node *p1=NULL;     Node *p2=plist;    Node *p3=NULL;     while(p2->next != NULL)    {       Node *tmp=p2->next;              if(tmp== NULL)       {           p1= p2;       }        p3=p2;       p2=tmp;    }}  int main(){    Node plist1;    plist1.next=NULL;    int i=0;    for(i=0; i<10; i++)    {       Insert_Head(&plist1 ,i);    }     Reverse(&plist1);    Show(&plist1);     return 0;}       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: