面试复盘2(面试回答不好的地方做总结)

创作人QQ:851301776,邮箱:[email protected],欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

问题1:实现单链表的反转?

面试的时候写出来了,但是写的不完成。(我个人觉得这个方面,简单明了)

#include <stdio.h>

typedef struct node_{
    int data;

    struct node_ *p_next;
}node;


void list_reveral(node *h)
{
    if((!h) || (!h->p_next)) return;
        
    node *tmp1 = h;
    node *tmp2 = NULL;

    for(tmp1 = tmp2->p_next; tmp1 != NULL; tmp1 = tmp1->p_next)
    {
        tmp2 = tmp1->p_next;
        tmp2 = tmp1;
    }
    
    h->p_next = NULL;
    h = tmp1;    

    return ;
}

问题2:冒泡

当时没写完,所以回到家,写完

void sort(void *p, int len)
{
    if((!p) || (len < 1)) return ;

    int i, j ;
    for(i =0;i<len-2;i++)
    {
        for(j=len-1; j> 0; j--)
        {
            if(p[i] > p[j])
            {
                int tmp = (int)p[i];
                p[i] = p[j];
                p[i] = (void)tmp;
            }
        }
    }

    return ;
}

问题3:判断链表是否有环?

typedef struct node_{
    
    int val;
    struct node_ *p_next;
}node;


int check_list_rings(node *h)
{
    if((!h) || (!h->p_next)) return -1; //error

    node *tmp1 = h;
    node *tmp2 = h->p_next->p_next;

    for(;tmp1 != NULL, tmp2 != NULL; tmp1 = tmp1->p_next, tmp2 = tmp2->p_next->p_next)
    {
        if(tmp1 == tmp2) return 1; //rings       
    }
    return 0;//no rings
}

问题4:如果调试在线进程

        gdb attach pid

猜你喜欢

转载自blog.csdn.net/weixin_43155199/article/details/125802731