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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

博客作业02---线性表

發(fā)布時(shí)間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 博客作业02---线性表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、PTA實(shí)驗(yàn)作業(yè)

題目1:7-1 最長(zhǎng)連續(xù)遞增子序列

給定一個(gè)順序存儲(chǔ)的線性表,請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法查找該線性表中最長(zhǎng)的連續(xù)遞增子序列。
例如,(1,9,2,5,7,3,4,6,8,0)中最長(zhǎng)的遞增子序列為(3,4,6,8)

1. 設(shè)計(jì)思路(偽代碼或流程圖)

/*查找最長(zhǎng)連續(xù)遞增子序列函數(shù) */定義整型變量i,j表示循環(huán)變量,k用來作找到后新數(shù)組下標(biāo)定義整型變量 MaxLength=1; //MaxLength為1, 表示長(zhǎng)度只有頭部定義整型 a[maxsize]存放最長(zhǎng)連續(xù)遞增子序列for i=0 to L->lengtha[i]=1; //表示長(zhǎng)度只有頭部 for i=0 to L->length-1for i=0 to L->length-1如果 前一個(gè)元素 > 后一個(gè)元素a[i]++否則 break 找到后: for i=0 to L->length如果 a[i] > MaxLength,k=i如果 長(zhǎng)度為1,直接輸出此數(shù)如果 長(zhǎng)度為0,return輸出最后結(jié)果 end for

2.代碼截圖


3.PTA提交列表說明

  • 編譯錯(cuò)誤。把PTA中的C改成C++后提交;
  • 部分正確。沒有考慮只有一個(gè)數(shù)時(shí)的情況,需要再加上if(MaxLength==1)時(shí),直接輸出這個(gè)數(shù);

題目2:6-2 jmu-ds-單鏈表逆置

本題要求實(shí)現(xiàn)一個(gè)函數(shù),將給定單向鏈表逆置,即表頭置為表尾,表尾置為表頭。鏈表為帶頭結(jié)點(diǎn)鏈表。
(單鏈表基本操作根據(jù)老師發(fā)的變化。)

1. 設(shè)計(jì)思路(偽代碼或流程圖)

/*逆置函數(shù)void ReverseList(List &L)調(diào)用 */如果鏈表L 為空表||只有有一個(gè)元素 輸出 NULL,不逆置定義指針p,q ListNode *p,*q移動(dòng)令p指向L的第二個(gè)數(shù)據(jù)while(p)q 保存下p的值 ,p移動(dòng) p的next指向前一個(gè)元素L->next的值不斷變化,循環(huán)end for

2.代碼截圖


3.PTA提交列表說明

  • 需要考慮空表或僅僅只有有個(gè)元素時(shí),不需要逆置;
  • 答案錯(cuò)誤。輸入1 2 3 4 5逆置后輸出4 3 2 1,修改第一個(gè)輸出所指結(jié)點(diǎn)輸出;
  • 部分正確。猜想是逆置函數(shù)出錯(cuò),注釋掉其他函數(shù),再讀代碼,查找出錯(cuò)地方,修改:在建模輸入值時(shí)循環(huán)條件出錯(cuò),將for(i=1;i<n;i++)改為for(i=1;i<=n;i++);
  • 格式錯(cuò)誤。輸出函數(shù),最后一個(gè)無空格;

題目3:7-3 兩個(gè)有序序列的中位數(shù)

1. 設(shè)計(jì)思路(偽代碼或流程圖)

先類似7-1將給出的兩個(gè)鏈表S1,S2合并,用鏈表S3裝好 /*查找中位數(shù)int Find(LinkList S3, int m,int n)調(diào)用*/ m為中位數(shù)下標(biāo) 定義整型變量j=0 表示S3下標(biāo)定義整型變量length=2*n表示合并后S3長(zhǎng)度 定義 LinkList p=S3方便進(jìn)行移動(dòng)如果 p為空 return 0當(dāng) j<=m 時(shí)j遞增p移動(dòng)直到j(luò)==m找到返回找到的下標(biāo)所指的值end for

2.代碼截圖



3.PTA提交列表說明

  • 編譯錯(cuò)誤。忘記把PTA中的C改成C++后提交;
  • 段錯(cuò)誤。之前把合并后的S3先輸出來,函數(shù)沒注釋掉,不用輸出,直接輸出中位數(shù)的值;
  • 答案錯(cuò)誤。中位數(shù)查出錯(cuò)誤,函數(shù)出錯(cuò),檢查發(fā)現(xiàn)length長(zhǎng)度在合并后沒有及時(shí)改變,應(yīng)該變成2n;

二、截圖本周題目集的PTA最后排名

1.順序表PTA排名

2.鏈表PTA排名

3.我的總分:215

三、本周學(xué)習(xí)總結(jié)

1.談?wù)勀惚局軘?shù)據(jù)結(jié)構(gòu)學(xué)習(xí)時(shí)間是如何安排,對(duì)自己安排滿意么,若不滿意,打算做什么改變?

  • 課前完成老師布置的預(yù)習(xí)作業(yè),然后平時(shí)上數(shù)據(jù)結(jié)構(gòu)課程,課后完成相應(yīng)的PTA練習(xí)題;
  • 不太滿意。除了老師安排的固定學(xué)習(xí)外可以自己課下多看數(shù)據(jù)結(jié)構(gòu)書,看看代碼和解題思路;
  • 編程上不懂的地方先上網(wǎng)自己嘗試弄懂,如果不行,請(qǐng)教同學(xué);

2.談?wù)勀銓?duì)線性表的認(rèn)識(shí)?

主觀認(rèn)識(shí):線性表是一種數(shù)據(jù)結(jié)構(gòu),能表示出前后相同元素之間的關(guān)系,讓元素有規(guī)律的排列或組合;
本章小結(jié):
(1)線性表的定義。線性表是具有相同特性的數(shù)據(jù)元素的一個(gè)有限序列;
(2)線性表的抽象數(shù)據(jù)類型描述。 
ADT List {
  數(shù)據(jù)對(duì)象:D={ | ∈ ElemSet, i=1,2,...,n, n≥0 }
數(shù)據(jù)關(guān)系:R1={ <ai-1 ,ai >| ,∈D, i=2,...,n }
基本操作:
   { 結(jié)構(gòu)初始化 InitList( &L ) }  
    操作結(jié)果:構(gòu)造一個(gè)空的線性表 L
{ 銷毀結(jié)構(gòu) DestroyList( &L ) }
  }
(3)線性表的順序存儲(chǔ)結(jié)構(gòu)---順序表及其運(yùn)用。
包括順序表的建立、初始化線性表、銷毀線性表、判斷是否為空表、求線性表長(zhǎng)度、輸出線性表,
還有在線性表中進(jìn)行某些基本操作運(yùn)算:如: 求線性表中某個(gè)數(shù)據(jù)元素值、按元素值查找 、插入元素值、 刪除元素值;
(4)線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)---鏈表,分有單鏈表、雙鏈表和循環(huán)鏈表及其運(yùn)用。
單鏈表中,每個(gè)節(jié)點(diǎn)有一個(gè)指針域,指向其后繼節(jié)點(diǎn),進(jìn)行操作 時(shí),除了對(duì)該節(jié)點(diǎn)操作外,還需要考慮其前后的節(jié)點(diǎn);
單鏈表也有順序表里面的基本操作:刪除、插入、建表(頭插法或尾插法,頭插法會(huì)逆序輸出)、初始化、銷毀等;
雙鏈表中,每個(gè)節(jié)點(diǎn)有兩個(gè)指針域,一個(gè)指向其后繼節(jié)點(diǎn),另一個(gè)指向其前驅(qū)節(jié)點(diǎn);
建立雙鏈表也有兩種方法:頭插法或尾插法,基本操作跟單鏈表同;
插入節(jié)點(diǎn)(如:s插入p后):
s->next=p->next;
p->next->prior=s;
s->prior=p;
p->next=s;
刪除節(jié)點(diǎn)(如:刪除p后的節(jié)點(diǎn),得修改兩個(gè)指針域):
p->next=q->next;
q->next->prior=p;
(5)循環(huán)鏈表,是另一種形式的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
特點(diǎn):表中尾節(jié)點(diǎn)的指針域不再是空,而是指向頭節(jié)點(diǎn),整個(gè)鏈表形成一個(gè)環(huán),因此,從表中任一個(gè)節(jié)點(diǎn)出發(fā)均可找到鏈表中其他節(jié)點(diǎn);
基本運(yùn)算:與非循環(huán)鏈表基本相同,只對(duì)表尾的判斷作了改變,例如,在循環(huán)單鏈表或循環(huán)雙鏈表L中,判斷表尾節(jié)點(diǎn)p的條件是p->next==L;
(6)有序表,指其中所有元素以遞增或遞減方式有序排列的線性表。
有序表的存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算:
若以順序表存儲(chǔ),除插入函數(shù)外其余運(yùn)算基本相同,掃描L,找到插入位置 i,將data[ i ]及后面元素后移一個(gè)位置,插入元素e;
若以單鏈表存儲(chǔ),除插入函數(shù)外其余運(yùn)算基本相同,查找前驅(qū)節(jié)點(diǎn)pre,創(chuàng)建放e的數(shù)據(jù)節(jié)點(diǎn)p,在pre后插入*p節(jié)點(diǎn);
有序表的歸并。將兩個(gè)有序表合并成一個(gè)有序表---二路歸并法。
二路歸并法:
分別掃描LA和LB兩個(gè)有序表,兩個(gè)均未掃描完時(shí),比較LA和LB當(dāng)前元素,較小的放入LC中,再從較小元素所在的有序表中取下一個(gè)元素,重復(fù)此過程直到 LA或LB比較完畢,最后將沒有比較完的有序表中余下的元素放入LC中;

3.代碼Git提交記錄截圖

轉(zhuǎn)載于:https://www.cnblogs.com/78tian/p/8643544.html

總結(jié)

以上是生活随笔為你收集整理的博客作业02---线性表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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