今天去 面试了,那位员工也退瞧不起人了,我都工作两年了,什么叫我没写过代码
编程题目,我的编程思路已经写的很清晰了,他看都不看一眼,也不管个午饭,白等了一天!
一些低级的,软件公司,经常会让大家做链表题目,其实链表题目没什么大不了的,
了解STL的 程序员们都知道, 关于List 和 Vector的操作,STL 都会提供一个 适配后的 迭代器,
我们在编写代码的时候,对于任何链表,或者 数组排序的题目,学会使用 游标,迭代的思想就可以了,
那么这类题目就没什么难度了!!!
题目: 请将一个链表逆序输出,若是循环链表,这输出失败。
编程思路:
1. 创建一个空的链表p1, 逐个逆序插入目标链表的每一个节点
2. 在插入p1之前,遍历p1链表,是否已存在该节点,
若存在,则表示是循环链表,否则,将p1 输出即可
判断存在的条件,比较两个节点的地址值
我已经把思路写得这么清晰了,为什么,还说我不会写代码,代码真的那么重要么?
我们要做的是,用代码表达人的思想,不是用思想来表达代码,所以语言真的有那么重要么?????
typedef struct Node{
int value;
Node* next;
} *pNode;
pNode Reverse(pNode list){
pNode pNodeout=NULL;
pNode pCursor=NULL;
pCursor=list;
bool b_cycle=false;
while(!b_cycle && pCursor!=NULL)
{
pNode pTemp=pCursor;
pCursor=pCursor.next;
if(ExistNode(pTemp,pNodeout))
b_cycle=true;
else
{
pTemp.next=pNodeout;
pNodeout=pTemp;
}
}
if(b_cycle)
return NULL;
else
return pNodeout;
}
Bool ExistNode(pNode node,pNode list){
pNode pCursor=list;
while(pCursor!=NULL){
if(node == pCursor)
return true;
else
pCursor=pCursor.next;
}
return false;
}