创作人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