看 數據結構 單鏈表 中 有個例子是這樣寫的 好像if條件是錯的 額~~~
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode *next;
}LNode, *LinkList;
/* L為頭結點的單鏈表的頭指針 */
/* 當第i個元素存在時,其值賦給e並返回OK,否則返回ERROR */
Status GetElem(LinkList L, int i, ElemType &e)
{
LinkList p = L->next;
int j = 1; // 計數器
while (p && j<i) // 尋找第i個結點
{
p = p->next; //
++j; // p始終指向第j個結點
}
if (!p || j>i) // 沒找到有兩種可能,即i不在范圍內:i<1||j<i 因為如果j遍歷鏈表後只有兩個結果:
return ERROR; //取到i或沒有取到i,如果沒有取到i,那麼計數器j一定就是表長,否則就是j==i,
e = p->data; //所以我覺得這個if條件是錯誤的,它說的兩個可能指的都是一個情況,就是遍歷到表尾而沒有找到
return OK;
}
本文出自 “火竹點滴” 博客