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