日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构课上笔记5

發(fā)布時(shí)間:2023/12/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构课上笔记5 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹了鏈表和基本操作

用一組物理位置任意的存儲(chǔ)單元來存放線性表的數(shù)據(jù)元素。 這組存儲(chǔ)單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至是零散分布在內(nèi)存中的任意位置上的。因此,鏈表中元素的邏輯次序和 物理次序不一定相同。

?

定義:

typedef struct Lnode{ //聲明結(jié)點(diǎn)的類型和指向結(jié)點(diǎn)的指針類型 ElemType data; //數(shù)據(jù)元素的類型 struct Lnode *next; //指示結(jié)點(diǎn)地址的指針 }Lnode, *LinkList; struct Student { char num[8]; //數(shù)據(jù)域char name[8]; //數(shù)據(jù)域int score; //數(shù)據(jù)域struct Student *next; // next 既是 struct Student // 類型中的一個(gè)成員,又指 // 向 struct Student 類型的數(shù)據(jù)。 }Stu_1, Stu_2, Stu_3, *LL;

頭結(jié)點(diǎn):在單鏈表的第一個(gè)結(jié)點(diǎn)之前人為地附設(shè)的一個(gè)結(jié)點(diǎn)。

帶頭結(jié)點(diǎn)操作會(huì)方便很多。

帶和不帶的我都寫過了

下面列出我見過的一些好題

1、

線性表的每個(gè)結(jié)點(diǎn)只能是一個(gè)簡(jiǎn)單類型,而鏈表的每個(gè)結(jié)點(diǎn)可以是一個(gè)復(fù)雜類型。

  • 正確
  • 錯(cuò)誤

?

錯(cuò),線性表是邏輯結(jié)構(gòu)概念,可以順序存儲(chǔ)或鏈?zhǔn)絻?chǔ),與元素?cái)?shù)據(jù)類型無關(guān)。鏈表就是線性表的一種 ?前后矛盾

?

2、

若某線性表中最常用的操作是在最后一個(gè)元素之后插入一個(gè)元素和刪除第一個(gè)元素,則采用( ???)存儲(chǔ)方式最節(jié)省運(yùn)算時(shí)間。

  • 單鏈表
  • 僅有頭指針的單循環(huán)鏈表
  • 雙鏈表
  • 僅有尾指針的單循環(huán)鏈表

    對(duì)于A,B,C要想在尾端插入結(jié)點(diǎn),需要遍歷整個(gè)鏈表。

    對(duì)于D,要插入結(jié)點(diǎn),只要改變一下指針即可,要?jiǎng)h除頭結(jié)點(diǎn),只要?jiǎng)h除指針.next的元素即可。

?

3、注意:線性表是具有n個(gè)數(shù)據(jù)元素的有限序列,而不是數(shù)據(jù)項(xiàng)

?

4、

以下關(guān)于單向鏈表說法正確的是

  • 如果兩個(gè)單向鏈表相交,那他們的尾結(jié)點(diǎn)一定相同
  • 快慢指針是判斷一個(gè)單向鏈表有沒有環(huán)的一種方法
  • 有環(huán)的單向鏈表跟無環(huán)的單向鏈表不可能相交
  • 如果兩個(gè)單向鏈表相交,那這兩個(gè)鏈表都一定不存在環(huán)

自己多畫畫想想就明白了,關(guān)于快慢指針我以后會(huì)寫總結(jié)。

?

5、

鏈接線性表是順序存取的線性表?。?(?)

  • 正確
  • 錯(cuò)誤

鏈接線性表可以理解為鏈表
線性表分為順序表和鏈表
順序表是順序存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取結(jié)構(gòu)
鏈表是隨機(jī)存儲(chǔ)結(jié)構(gòu)、順序存取結(jié)構(gòu)

?

6、

typedef struct node_s{int item;struct node_s* next; }node_t; node_t* reverse_list(node_t* head) {node_t* n=head;head=NULL;while(n){_________ }return head;}

空白處填入以下哪項(xiàng)能實(shí)現(xiàn)該函數(shù)的功能?

  • node_t* m=head; head=n; head->next=m; n=n->next;
  • node_t* m=n; n=n->next; m->next=head; head=m;
  • node_t* m=n->next; n->next=head; n=m; head=n;
  • head=n->next; head->next=n; n=n->next;


?

代碼的功能是要實(shí)現(xiàn)鏈表的反轉(zhuǎn)。為了方便闡述,每個(gè)結(jié)點(diǎn)用①②③④⑤⑥等來標(biāo)示。

在執(zhí)行while(n)循環(huán)之前,有兩句代碼:

node_t* n=head;

head=NULL;

這兩行代碼的中:第一句的作用是用一個(gè)臨時(shí)變量n來保存結(jié)點(diǎn)①,第二句是把head修改為NULL。

然后就開始遍歷了,我們看到while循環(huán)里的那四句代碼:

node_t* m=n; n=n->next; m->next=head; head=m;

先看前兩句,用m來保存n,然后讓n指向n的下一個(gè)結(jié)點(diǎn),之所以復(fù)制 n 給 m ,是因?yàn)?n 的作用其實(shí)是? 控制while循環(huán)次數(shù)? 的作用,每循環(huán)一次它就要被修改為指向下一個(gè)結(jié)點(diǎn)。

再看后兩句,變量head在這里像是一個(gè)臨時(shí)變量,后兩句讓 m 指向了 head,然后 head 等于 m。

?

7、

若某表最常用的操作是在最后一個(gè)結(jié)點(diǎn)之后插入一個(gè)節(jié)點(diǎn)或刪除最后一二個(gè)結(jié)點(diǎn),則采用()省運(yùn)算時(shí)間。

  • 單鏈表
  • 雙鏈表
  • 單循環(huán)鏈表
  • 帶頭結(jié)點(diǎn)的雙循環(huán)鏈表

D

帶頭結(jié)點(diǎn)的雙向循環(huán)鏈表,頭結(jié)點(diǎn)的前驅(qū)即可找到最后一個(gè)結(jié)點(diǎn),可以快速插入,再向前可以找到最后一二個(gè)結(jié)點(diǎn)快速刪除

單鏈表找到鏈表尾部需要掃描整個(gè)鏈表

雙鏈表找到鏈表尾部也需要掃描整個(gè)鏈表

單循環(huán)鏈表只有單向指針,找到鏈表尾部也需要掃描整個(gè)鏈表

?

8、

單鏈表的存儲(chǔ)密度( ?)

  • 大于1
  • 等于1
  • 小于1
  • 不能確定

全麥白

存儲(chǔ)密度 = 數(shù)據(jù)項(xiàng)所占空間 / 結(jié)點(diǎn)所占空間

?

9、完成在雙循環(huán)鏈表結(jié)點(diǎn)p之后插入s的操作是

  • s->prior=p; s->next=p->next; p->next->prior=s ; p->next=s;

?

10、用不帶頭結(jié)點(diǎn)的單鏈表存儲(chǔ)隊(duì)列,其隊(duì)頭指針指向隊(duì)頭結(jié)點(diǎn),隊(duì)尾指針指向隊(duì)尾結(jié)點(diǎn),則在進(jìn)行出隊(duì)操作時(shí)()

  • 僅修改隊(duì)頭指針
  • 僅修改隊(duì)尾指針
  • 隊(duì)頭、隊(duì)尾指針都可能要修改
  • 隊(duì)頭、隊(duì)尾指針都要修改

?

當(dāng)只有一個(gè)元素,出隊(duì)列時(shí),要將隊(duì)頭和隊(duì)尾,指向-1.所以說隊(duì)頭和隊(duì)尾都需要修改

?

?

鏈表刷了幾百道吧,好題還有很多,以后接著更新

總結(jié)

以上是生活随笔為你收集整理的数据结构课上笔记5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。