這幾天看歐立奇的《程式設計師面試寶典》,發現其中單鏈表的建立的程式存在錯誤,特別改正如下,原書的程式求的鍊錶的長度要比正確的單鏈表的長度要多1。
在寫程式時候,要特別注意if和while的區別。
下面的程式是單鏈表的建立、插入、刪除、逆序、排序、測長等程式**,全部都除錯通過(存在的問題在於,將鍊錶的頭指標看成了乙個結點)。
#include using namespace std;
#include#define len sizeof(struct student)
typedef struct student
node;
struct student *creat()
else
}else
}//head=head->next;
p_old ->next =null;
int b= head->next->next->data;
return head;
}int length(struct student *head)
return num;
}void print(struct student *head)
coutnext !=null)
if (p_front->data==num)
else
}return head;
}node *insert(node *head,int num)
if(p_front->data >= num)
else if(p_front != head && p_front->next != null)
}else
return head;
}node *sort(node *head)
n=length(head);
int temp;
for(int i=1;idata < p->next->data)
p=p->next;}}
return head;
} node *reverse(node *head)
head ->next;
head = p;
return head;
} void main()
單鏈表操作
include include typedef struct node tag node 建立不帶頭結點的單鏈表 node createnode else p q scanf d n 函式體結束,q指標變數被釋放,不能通過head引數帶回到呼叫函式 要把head帶回到呼叫函式,要把它定義為指向指標的...
單鏈表操作
include stdio.h include malloc.h include define n 10 代表要處理的元素個數 可以誰使用者的意思修改 define ok 1 define overflow 0 typedef int elemtype typedef int status type...
單鏈表操作
這一次補上鍊表的注釋,是空閒的時候敲出來的,如果有錯,希望幫忙糾正 部分給出了詳細說明,這裡只選取了基本操作,因為更複雜的鍊錶操作太繁瑣,這裡就不寫了 如果有什麼不懂的地方,可以隨時詢問 include using namespace std typedef int elemtype struct ...