完整的c語言鏈表 C語言單向鏈表中如何往文件里存入數(shù)據(jù)和讀取數(shù)據(jù)?
C語言單向鏈表中如何往文件里存入數(shù)據(jù)和讀取數(shù)據(jù)?我花了半個小時寫了一個簡單的例子。下面是在vs2005中成功調(diào)試,文件名為test.txt,在當前目錄下。#包含ltstdio.hgt#包含ltstdl
C語言單向鏈表中如何往文件里存入數(shù)據(jù)和讀取數(shù)據(jù)?
我花了半個小時寫了一個簡單的例子。下面是在vs2005中成功調(diào)試,文件名為test.txt,在當前目錄下。
#包含ltstdio.hgt
#包含ltstdlib.hgt
# Defined correctly 1
# Define false 0
Typedef structure node
{
整數(shù)
Int score
Structure node * Next
} node, * linked list
Void InitLinklist(Linklist* L) //初始化單個鏈表,并建立一個前導(dǎo)節(jié)點的空鏈表。
{
*L (Node*)malloc(sizeof(Node))
(*L)-gtnext NULL
}
void創(chuàng)建鏈表(鏈表L)//尾插法建立單鏈表
{
Nodes *r, *s
r L
int iNum,iScore
printf(
單片機編程需要用到c語言的鏈表和文件的知識嗎?
單片機初級編程不需要這些知識。
但是要做高級編程,比如移植操作系統(tǒng)或者編寫系統(tǒng),就離不開文件管理。
用c語言實現(xiàn)單鏈表的逆置,能將此程序詳細的解釋一下嗎?
算法的核心是反函數(shù),其他的用來輔助建立鏈表,輸出鏈表。
從數(shù)據(jù)結(jié)構(gòu)的定義來看,這是一個前導(dǎo)節(jié)點的鏈表。要說得非常清楚,你得耐心畫一張圖。我簡單地說了一下思路:
[頭指向頭節(jié)點]
Phead //p最初指向頭節(jié)點。
Sp-gtnext //s最初指向第一個節(jié)點。
while(s-gtnext!NULL)//只要沒有到達最后一個元素就繼續(xù)。最后一個元素的next必須為空。
{//進入核心,樓主。
Ts-gtnext //用t指向s后面的元素。
S-gtnextp //把S指向她面前的那個,此時就會實現(xiàn)反向。而且是原地反轉(zhuǎn)。沒有一個元素移動。
Ps //然后P向后移動s。
St //s向后移動到p。
這樣下一輪再講下一個,然后指向剛才的下一個。插值
}
S-gtnextp //最后一個的時候,依然指向她之前的那個。
Head-gtnext-gtnextNULL//下一個頭指針指向原指針??隙ㄊ欠崔D(zhuǎn)后的最后一個。所以最后一個的nextNULL是清楚的。
Head-gtnexts//s是逆序前的最后一個,逆序后的第一個,所以把頭對著他。
畫張圖體驗一下,樓主!