C語言資料結構求解,c語言常見的資料結構有哪些

2023-06-22 18:20:04 字數 6094 閱讀 5159

1樓:到處參觀

如上圖,把k位置的資料刪除後,需要把k後面的元素逐個向前移動一次。

一共是n個元素,k前面(包括k)一共是k個元素,剩下需要移動的就是n-k個元素。答案選a

2樓:哥德堡快遞

需要移動k+1、k+2。。。一直到n的元素,所以次數是n-(k+1)+1

c語言常見的資料結構有哪些?

3樓:環球青藤

1、線性資料結構

元素之間一般存在元素之間存在一對一關係,是最常用的一類資料結構,典型的有:陣列、棧、佇列和線性表。

2、樹形結構

結點間具有層次關係,每一層的一個結點能且只能和上一層的一個結點相關,但同時可以和下一層的多個結點相關,稱為「一對多」關係,常見型別有:樹、堆。

3、圖形結構

在圖形結構中,允許多個結點之間相關,稱為「多對多」關係。

1)線性資料結構:元素之間一般存在元素之間存在一對一關係,是最常用的一類資料結構,典型的有:陣列、棧、佇列和線性表。

2)樹形結構:結點間具有層次關係,每一層的一個結點能且只能和上一層的一個結點相關,但同時可以和下一層的多個結點相關,稱為「一對多」關係,常見型別有:樹、堆。

資料結構---c語言基礎

4樓:華源網路

程式=演算法+資料結構

資料結構是設計os、dbms、編譯等系統程式和各種應用程式的重要基礎。

常見的資料結構有:陣列、棧、佇列、表、串、樹、圖和檔案等。

資料是什麼?

雜亂的資料不能表達和交流資訊。

資料之間是有聯絡的。

資料之間是有結構的;

在某種資料的結構上可以定義一組運算。

程式設計的基本要素:

資料(date):所有能被計算機處理的符號的集合。

資料元素(data element):資料這個集合中的單個個體。

資料項(data item):資料元素常常被分為若干個資料項,資料項是資料具有意義的最小單位。

資料物件(data object):具有相同特性的資料元素的集合。

資料結構(data structure):是帶有結構的資料元素的集合。

邏輯結構(logical structure):指資料元素之間的結構關係。

物理結構(physical structure):指資料結構在計算機記憶體中的表示。

物理結構的存放直接決定了邏輯結構的選擇。

什麼是演算法

演算法是一個有限的指令集,遵循指令流可以完成特定的功能。

演算法的基本特性:

如何衡量一個正確演算法的好壞?

演算法與程式的區別。

主要區別在:有窮性、正確性和描述方法

程式可以是無窮的,例如os。

演算法是有窮的;程式可以是錯誤的,演算法必須是正確的;

程式是用程式設計語言描述,在機器上可以執行;

演算法還可以用框圖、自然語言等方式描述。

衡量的三個標準:

執行所花費的時間(演算法的時間特性);

所佔用儲存空間的大小(演算法的空間特性);

其他(可讀性、易調性、健壯性、可移植性等)

時間和空間特性的巨大改進源於更好的資料結構或演算法。

為什麼要計算時間複雜度?

設:a1,a2和a3是求解同一問題的不同演算法,其時間複雜度分別為:o(n), o(nlogn), o(n!)。

c1和c2為計算機,且c2的計算速度是c1的10倍。

不必追求高效演算法,低效演算法可由高速計算機來彌補的看法,是錯誤的。

c語言與演算法和資料結構的關係

5樓:匿名使用者

資料結構的主要作用是幫助你提升自己的程式設計思維!使你編寫程式的時候有一個好的思維和框架!使你寫的**和程式有一個好的框架!

資料結構研究的是資料的邏輯結構、儲存結構(物理結構)和資料的運算。其中的資料運算就是指演算法。

演算法只是具體的實現步驟的指令集合!但是演算法也是資料結構最重要的一部份!設計一個好的演算法可以提高自己程式的執行效率!

演算法不一定要求能夠在計算機上直接執行,但程式必須要求能在計算機中執行)

c語言只是對演算法或者資料結構的描述!描述資料結構和演算法不侷限於c語言,也可以是c++語言和其他的計算機語言甚至也可以用人的自然語言!

所以只是說學習好c語言能夠使自己學習的資料結構理論更好的在計算機中描述和表達!

6樓:匿名使用者

肯定是資料結構啦,資料的邏輯結構決定了演算法,資料的儲存結構決定了如何實現演算法。但是我覺得還是要了解一點c的基礎知識比較好。因為資料結構裡用的語言不是嚴格的c語言而是一種類c的解釋語言。

有c更有助於你理解資料結構。而且若是你想更進一步發展的話,比如考研資料結構就是必考的一門,所以資料結構很重要!!

7樓:匿名使用者

程式設計 = 演算法 + 資料結構 ,至於c語言只是一種工具。

8樓:**頁

① 不要認為單獨學c很難真正編寫出程式。

不要太認為你沒學資料結構和演算法難以解決實際程式設計問題。

c語言只要你熟練掌握,這就是你學data structure and algorithms 的基礎。

學好數構和演算法的前提是:你c語言用得比較熟練了(特別是指標、複合變數、陣列的程式設計運用)

最後,你只要看一本關於資料結構和演算法的書就夠了《演算法導論》(國外的那本),如果要深入搞懂它,最好看它之前看knuth的一本《concrete mathematics》。演算法導論算是演算法與資料結構的聖經了,裡面充分講了演算法和資料結構的大部分理論和實踐。

另外,演算法和資料結構是有深刻關係的,但是你完全可以學演算法的時候不用複雜資料結構就能解決大部分問題;或者不用複雜演算法,單憑構造複雜資料結構解決複雜問題。

c語言資料結構問題求解

9樓:考驕

可以不安常規計算,列出陣列元素,a00,a11,a22,a33...

a00對應644,a22對應676,相隔32中間還又一個a11,所以每個元素相隔是16,所以a33應該是a22加16,692,c

10樓:匿名使用者

a[0][0]和a[2][2]相差了(2*n+2)個元素,與a[3][3]相差了(3*n+3)個元素,所以,676-644=32,32/2*3=48,644+48=692,選擇c項。

跪求資料結構(c語言版)的幾個問題解答

11樓:汗耕順閔凰

實驗一。單連結串列有一個頭節點hea

d,指向連結串列在記憶體的首地址。連結串列中的每一個節點的資料型別為結構體型別,節點有兩個成員:整型成員(實際需要儲存的資料)和指向下一個結構體型別節點的指標即下一個節點的地址(事實上,此單連結串列是用於存放整型資料的動態陣列)。

連結串列按此結構對各節點的訪問需從連結串列的頭找起,後續節點的地址由當前節點給出。無論在表中訪問那一個節點,都需要從連結串列的頭開始,順序向後查詢。連結串列的尾節點由於無後續節點,其指標域為空,寫作為nul

l。刪除運算是將表的第i個結點刪去。

具體步驟:(1)找到要刪除結點ai的儲存位置p(因為在單連結串列中結點ai的儲存地址是在其直接前趨結點ai-1的指標域next中)

2)令p->next指向ai的直接後繼結點(即把ai從鏈上摘下)(3)釋放結點ai的空間,將其歸還給"儲存池"。

插入運算是將值為x的新結點插入到表的第i個結點的位置上,即插入到ai-1與ai之間。

具體步驟:(1)找到ai-1儲存位置p

2)生成一個資料域為x的新結點*s

3)令結點*p的指標域指向新結點。

4)新結點的指標域指向結點ai。

#include

typedef

intnumtype;

typedef

floatscoretype;

typedef

struct

nodelinklist;intn;

建立單連結串列。

linklist

creat()

p2->next=null;

returnhead;

單連結串列的插入。

linklist

insert(linklist

head,linklist

stud)elseif(p0->scorescore)elsereturnhead;

單連結串列的刪除。

linklist

del(linklist

head,float

dscore)

elseif(dscore

p1->score)

elseprintf("%2f

沒有在連結串列中找到!",dscore);

returnhead;

輸出單連結串列。

voiddisplay(linklist

r)printf(""

單連結串列的插入與刪除。

intmain()

12樓:輝蘭英曹冬

實驗一:(新手初試牛刀。

如有缺點請指教)

#include

#include

struct

student

boolempty(student

head);

voidprint(student

head)else

boolempty(student

head)void

create(student

head)void

delete(student

head,int

number)else

p=q;print(head);

voidmain()

elseif(i==2)

printf("請選擇。

1.插入。2.刪除。

0.退出");

scanf("%d",&i);

學習c++資料結構,求經驗~

13樓:愛生活的翟先森

首先坦白告訴你,資料結構不好學。在學校學的然後做題那種的都很片面。畢竟是要考試,我建議你先跟老師走,看嚴蔚敏那本教材,會做題就行啦。

但真正學資料結構,我覺得在於清晰掌握思想,並自己用手去實現。這個過程週期長。要想學得深刻,你謹記以下幾點:

1.分章再分節,節節來突破。

2.要耐心,開始看偽**覺得好煩,靜下心去,會慢慢懂得。

3.要多用筆代替電腦去畫畫**走的流程。等到很熟了,再在計算機上在思想的指導下編碼,而不是靠記憶,或是老修改過來修改過去的亂撞。

4.淡定加深沉。週期長,所以你慢慢學,不要著急。

每一節相關的東西儘量都搞透。舉個例子:排序演算法裡那麼多種,有哪些穩定但又為啥穩定,複雜度哪些為log2n,又是如何計算來的,最壞時又如何,最好時又如何。

你問得越多,你自己去想,慢慢你就會愛上資料結構啦哦。

資料結構(c語言)

我知道只要設計函式就可以了,但為便於你理解,還是把連結串列的整個程式貼上去吧。其實連結串列不難,碰到複雜的,或看別人的連結串列程式,最重要的是要邊看邊畫圖,把關係表示出來。include include typedef int elemtype typedef struct lnode lnode,...

c語言資料結構時間複雜度,C語言,資料結構中演算法的時間複雜度

1 因為抄f n 和g n 在n趨於 無窮大時襲為n 3階,h n 為n 1.5因此 1 f n o g n 2 g n o f n 3 h n o n 1.5 都正確bai,第 4 不對,du因為nlgn 的無窮zhi 大階次比n 1.5低,h n 趨於無窮大時dao被忽略了3 從優到劣也就是從階...

沒學過c語言可以學c語言資料結構與演算法嗎

你好一點小建bai議希望能du 對你有幫助 1 學演算法 學習演算法和zhi具體的語言還是dao 有一內定的聯絡,比如說你的容演算法最後要用c語言來實現,因為c是程序導向的,所以這和用物件導向的語言如c 來實現可能考慮的思路是有點區別的,但是你要說有絕對的關係也不一定,因為演算法他是一種思想,一種解...