6 2 單鏈表元素定位 12分

2021-10-09 15:48:13 字數 2442 閱讀 1436

本題要求在鍊錶中查詢第乙個資料域取值為x的節點,返回節點的位序。l是乙個帶頭結點的單鏈表,函式listlocate_l(linklist l, elemtype x)要求在鍊錶中查詢第乙個資料域取值為x的節點,返回其位序(從1開始),查詢不到則返回0。例如,原單鏈表各個元素節點的元素依次為1,2,3,4,則listlocate_l(l, 1)返回1,listlocate_l(l, 3)返回3,而listlocate_l(l, 100)返回0。

int

listlocate_l

(linklist l, elemtype x);

其中l是乙個帶頭節點的單鏈表。x是乙個給定的值。函式須在鍊錶中查詢第乙個資料域取值為x的節點。若找到則返回其位序(從1開始),找不到則返回0。

//庫函式標頭檔案包含

#include

#include

#include

//函式狀態碼定義

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef

int status;

typedef

int elemtype;

//假設線性表中的元素均為整型

typedef

struct lnode

lnode,

*linklist;

status listcreate_l

(linklist &l,

int n)

return ok;

}//下面是需要實現的函式的宣告

intlistlocate_l

(linklist l, elemtype x)

;int

main()

scanf

("%d"

,&x)

;//輸入待查詢元素

k=listlocate_l

(l,x)

;printf

("%d\n"

,k);

return0;

}

4

1 2 3 4

1

1
題解:
int

listlocate_l

(linklist l, elemtype x)if(

!p)return0;

return count;

}

解題思路:

注意問題:

補充問題:

(一)、鍊錶的建立為什麼一定要在主函式中定義乙個頭指標才能開始建立:

兩個函式的作用域,若是在子函式中定義,那麼在子函式完成呼叫之後就會將子函式內變數所佔據的記憶體釋放掉,那麼在子函式中定義的指標變數就不復存在了

——》問題:那麼通過子函式開闢的儲存單元會不會受到影響呢?例如鍊錶的開闢

(二)、關於函式與變數的作用域與生命週期:

初始化區域性變數和全域性變數

當區域性變數被定義時,系統不會對其初始化,您必須自行對其初始化。定義全域性變數時,系統會自動對其初始化,如下所示:

資料型別

初始化預設值

int0

char

『\0』

float

0double

0pointer

null

(三)、主函式與子函式的生命週期與作用域

區域性變數:定義在函式內或者塊的內部的變數。

全域性變數:定義在函式的外部,通常是函式的頂部,在整個函式生命週期內都有效(時間),作用域是整個函式(能被人以函式使用)

形式引數變數: 在定義的子函式內使用,

函式宣告可以省略形參名,但是函式定義的首部必須寫出所有形參名並給出其對應的資料型別

函式宣告是對定義的函式的返回值的型別說明,以通知系統在本函式中所呼叫的函式是什麼型別

宣告是不開闢記憶體的,僅僅告訴編譯器,要宣告的部分存在,要預留一點空間。定義則需要開闢記憶體。

//在程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,如果兩個名字相同,會使用區域性變數值,全域性變數不會被使用

#include

/* 全域性變數宣告 */

int g =20;

int main (

)

(四)關於各種變數的作用域(記憶體區域):

單鏈表元素定位

6 2 單鏈表元素定位 12 分 本題要求在鍊錶中查詢第乙個資料域取值為x的節點,返回節點的位序。l是乙個帶頭結點的單鏈表,函式listlocate l linklist l,elemtype x 要求在鍊錶中查詢第乙個資料域取值為x的節點,返回其位序 從1開始 查詢不到則返回0。例如,原單鏈表各個...

PTA 單鏈表元素定位

庫函式標頭檔案包含 include include include 函式狀態碼定義 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 typedef int st...

6 2單鏈表

1.特徵 鍊錶中的元素個數可以根據需要增加和減少,不像陣列,在宣告之後就固定不變 元素的位置可以變化,即可以從某個位置刪除,然後再插入到乙個新的地方 3.基本操作 1 建立鍊錶是指,從無到有地建立起乙個鍊錶,即往空煉表中依次插入若干結點,並保持結點之間的前驅和後繼關係。2 檢索操作是指,按給定的結點...