一個看不懂的c語言數據結構,一個看不懂的c語言數據結構怎麼辦

本文目錄一覽:

C語言數據結構問題,剛學就不懂了

while(p!=NULL)

{p=p-link;++i; //這裡有問題,還沒有訪問數據就直接將指針移到後面節點了;

sum=sum+p-data;} //這個應該寫到上面,另外因為上面的原因可能會導致內存非法操作,如你操作到p指向c的時候,p此時不為NULL,但當你執行p=p-link;後,p就成為NULL了,再訪問p-data就會出錯的。

ave=sum/i;

return ave;}

改為:

while(!p)//從Head開始訪問,直到鏈表結束

{

sum += p-data;//累加數據

i += 1;//計數器加1

p = p-link;//指向下一節點

}

if(i!=0)//若鏈表不為空,返回平均值

return sum/i;

else//若為空鏈表,返回0,主要是避免除0錯誤的發生,Good Luck!

return 0;

高手解答 c語言編寫數據結構實例 下面的代碼看不懂,高手解答

while(i=L.length!compare(*p++,e))

++i;

這個循環就是掃描數組找滿足關係的元素的一個過程,循環條件不用解釋了吧,一個是循環的邊界判斷條件,一個是已知的compare()函數,也就是循環的結束條件;

if(i=L.length)

這個if語句的判斷條件是i=L.length,表示的是上邊的循環式從中間跳出的,也就是找到找到了滿足條件的元素,所以返回該元素的位序i,否則表示上面的循環已超出邊界並且沒有滿足條件的元素,所以返回0;

Status(*compare)(ElemType,ElemType))是個函數指針;

數據結構C語言版自學完全看不懂

鄙人是計算機專業的,假期里,在我預習數據結構的時候也是看不懂。不過可以給你點建議:

1、看不懂,只有硬著頭皮看,把整本書大致的看一遍,然後回頭再看一遍。

2、到開這門課的班級聽課,與其老師溝通,了解那些是重點,那些是了解的知識(有些小節是不用看的)。

3、網上有視頻的,可以下載 《嚴蔚敏老師》 的視頻。

數據結構確實比較難,是計算機考研科目里僅次於數學的一門,有困難是正常的。

相信你是一個自學能力很強的人,祝你學業有成。

一道C語言數據結構題,程序已給好,看不懂意思,求給分析。。注釋。。重賞。。。!

你這個分不太好賺哦…真不好琢磨你哪裡不懂,這就關係到注釋到哪種程度.能幫你理解多少算多少吧.

為了讓你方便看,我們從節點定義和主函數開始.

————————————————

struct slist

{

double s; //用於存儲分數的變數

struct slist *next; //指向下一個節點的指針

};

typedef struct slist STREC //申明節點結構類型

void main()

{

double s[N]={85,76,69,85,91,72,64,87}, max; //這是程序樣本,即所謂N個學生的成績.但這個N是有限的,靜態的,編譯的時候,#define N 8,最多就是8個.這顯然只是用於測試後面處理用的樣本.

STREC *h; //申明了一個節點指針。

此處需要說明一下的是,從這個代碼的操作來看,這個鏈表是先進先出的隊列操作模式,可以通俗的說h是這個隊列的頭。但此處代碼,多用內存存儲了一個0,從某種意義上說,這是不必要的;

h=creat(s);

//建立隊列,將數組中的分數樣本存儲到隊列。參數為數組首地址。

outlist(h);

//展示隊列數據。

max=fun(h);

//調用fun,返回最大的分數值。

printf(“max=%6.1f\n”,max);

//按照指定寬度列印浮點數格式的結果值。

}

————————————————————–

下一個,按順序來看,建立隊列。

STREC *creat( double *s) //返回隊列頭的地址(指針)。參數為指向雙精度數據變數的指針。

{

STREC *h,*p,*q; //此處說明:h存放隊列頭地址,p存放當前訪問隊列節點地址(已經進入隊列,或者說當前隊列尾節點地址),q存放新增節點的地址(還沒有進入隊列);

int i=0; //初始化循環增量

h=p=(STREC*)malloc(sizeof(STREC)); //為隊列頭分配空間,並用指針變數記錄隊列頭地址。可以認為,當前只有一個節點,既是頭,也是尾;

p-s=0; //隊列頭節點中分數變數賦值為0。這是可以不這樣做的。

while(iN) //從第0個數據開始存儲,一直到第N-1個數據,共計存儲N個數據,將數據存儲完成後退出循環

{

q=(STREC*)malloc(sizeof(STREC)); //為新節點數據分配空間,首地址保存在q中

q-s=s[i]; //將數組中第i個對應分數數據存入新節點對應位置。

i++; //循環變數自增1

p-next=q; //將新節點鏈接到隊列尾。或者說,當前隊列尾的下一個節點是上面構造的那個節點;

p=q;///重新記錄或者說更新隊列尾

}

p-next=0; //此處對於這種用法不發表看法;意思是,最終形成的隊列「尾節點的下一個節點不存在」,就是表示隊列生成完畢,此時p就是真正的隊列尾,後面再也沒有其它節點了。

return h; //將隊列頭地址返回

}

———————————————-

下一個展示隊列

void outlist(STREC *h)

{

STREC *p; //申明存放節點地址的指針標量

p=h-next; //取得隊列中第二個節點的地址。因為在構造時,第一個節點中的分數數據是0,所以,從第二個開始列印。

printf(“head”); //開始做列印提示

do

{

printf(“-%2.0f”,p-s); //按照定製格式列印當前節點中的分數值

p=p-next; //取得下個節點的地址

}

while(p!=0) ; //隊列沒有列印完的話,繼續。此處用法不算標準用法。當然,原理上沒有問題。

printf(“\n\n”);

}

————————————————————————————-

最後一個

double fun( STREC *h ) //在隊列中,找到最大的分數值

{

double max; //申明存放最大分數數據的變數

STREC *q=h; //申明指向隊列的指針變數

max=h-s; //用隊列頭中的數據初始化最大分數值。即:max=0;

do

{

if(q-smax) //用隊列中的當前節點(其實是每一個節點)中的數據與當前MAX(目前選出的最大數)做比較。包括隊列頭重的那個’0『,即第一次比對的時候,是if(00).

max=q-s; //總是存放比較大的那個數

q=q-next; //取隊列中下一個節點

}

while(q!=0); //隊列沒有遍歷完的話,繼續

return max; /隊列遍歷完成,返回最大的那個數

}

——————–

希望能夠幫到你!

天啊,我早上打開樓主這個求助,我以為可能回答的人不會太多,由於我還在忙,途中吃了個飯,才慢慢過來寫,結果…不過我比較了下,還是我寫的要詳細些。(一樓有點暈,估計他以後自己看了都會笑自己), 最重要的是,大家能幫到你,就OK了!

原創文章,作者:OPKR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137584.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OPKR的頭像OPKR
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 想好好學但又看不懂

    本文將從多個方面闡述如何在進階編程學習中應對看不懂的情況以及解決方法。 一、閱讀文檔和代碼注釋 閱讀文檔對於理解代碼非常重要,一個好的代碼注釋也能夠讓我們更容易地理解代碼的含義。當…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 數據結構與演算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與演算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序演算法、字元串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 數據結構學生成績管理系統

    在現代教育中,學生成績的管理已經成為了一個不可或缺的部分。藉助數據結構,一個高效、可靠的學生成績管理系統可以被輕鬆實現。 一、數據結構的選擇 在構建學生成績管理系統時,選擇合適的數…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論