C語言中的經典小程式4

2021-06-18 06:54:16 字數 997 閱讀 8533

8、 給出乙個單鏈表,不知道節點個數n,怎樣只遍歷一次就可以求出中間節點。

這個問題的大體思路是:設立兩個指標,比如*p和*q。p每次移動兩個位置,即p = p->next->next;

q每次移動乙個位置,即q = q->next; 當p達到最後乙個節點時,q就是中間節點了。

下面是可以實現的具體**:

#include

#include

typedef struct nodenode;

/*建立單鏈表*/

node *creat()

else

}p->next = null; //末尾節點必須指向空,否則會有災難性後果。

head = head->next;

return head;

/* 列印鍊錶*/

void print(node *head)

printf("the length of chain is %d \n",n);

q = head;

printf("the chain is :\n");

while (q != null)

printf("\n");

/*不 知道節點數n,遍歷一次找到中間節點*/

void searchmid(node *head)

else

}      printf("the mid node is : %d\n",q->data);

int main(void)

注意:在這個程式裡被塗為紅色的**,是關鍵性**,你可能在《程式設計師面試寶典》之類的書

上看到過這個解題思維,但是那只是思維,具體**是不能參考的,如果**裡沒有這部

分紅色**的話,當你輸入的數值個數是奇數個時執行到while(p->next->next != null);

時會出現段錯誤。

C語言中的經典小程式1

首先宣告所寫的這些函式都是本人自己實踐過的,每乙個程式都是能夠實際執行的。1.將乙個十進位制的無符號整型資料轉換成二進位制形式表示,用c語言實現。我寫了乙個程式,經過執行能夠實現 include void funcint to ox unsigned int a int main void void...

c語言10個經典小程式

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?1.程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。2.程式源 main 程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提1...

C語言字元處理經典小程式

首先,說一下原理 用迴圈逐個讀取字元 所有字母均小寫 並儲存到乙個一維字元陣列中直到遇到結束標誌為止。這裡的結束標誌分為三種情況,一是遇到換行符,二是超過了預設的句子長度 這裡設為200 三則是遇到了終止字元 句號.問號?感嘆號 然後再用乙個迴圈搜尋陣列,找到最後乙個單詞的起始位置,列印這個單詞。重...