C 資料結構實驗之鍊表九 雙向鍊錶 SDUT

2021-10-02 06:40:57 字數 2382 閱讀 9350

time limit: 1000 ms memory limit: 65536 kib

problem description

學會了單向鍊錶,我們又多了一種解決問題的能力,單鏈表利用乙個指標就能在記憶體中找到下乙個位置,這是乙個不會輕易斷裂的鏈。但單鏈表有乙個弱點——不能回指。比如在鍊錶中有兩個節點a,b,他們的關係是b是a的後繼,a指向了b,便能輕易經a找到b,但從b卻不能找到a。乙個簡單的想法便能輕易解決這個問題——建立雙向鍊錶。在雙向鍊錶中,a有乙個指標指向了節點b,同時,b又有乙個指向a的指標。這樣不僅能從煉表頭節點的位置遍歷整個鍊錶所有節點,也能從鍊錶尾節點開始遍歷所有節點。對於給定的一列資料,按照給定的順序建立雙向鍊錶,按照關鍵字找到相應節點,輸出此節點的前驅節點關鍵字及後繼節點關鍵字。

input

第一行兩個正整數n(代表節點個數),m(代表要找的關鍵字的個數)。第二行是n個數(n個數沒有重複),利用這n個數建立雙向鍊錶。接下來有m個關鍵字,每個佔一行。

output

對給定的每個關鍵字,輸出此關鍵字前驅節點關鍵字和後繼節點關鍵字。如果給定的關鍵字沒有前驅或者後繼,則不輸出。

注意:每個給定關鍵字的輸出佔一行。

一行輸出的資料之間有乙個空格,行首、行末無空格。

sample input

10 3

1 2 3 4 5 6 7 8 9 035

0sample output

2 44 69

hint

source

對於雙向鍊錶,只要對單向鍊錶理解了,雙向鍊錶便是十分好理解,只要在定義節點形式時定義兩個指標,乙個指向後乙個節點,乙個指向前乙個節點

**一:

#include

#include

struct node

;struct node *

create

(int n)

;//建立鍊錶;

void

sreatch

(struct node *head,

int key)

;//鍊錶查詢;

intmain()

return0;

}struct node *

create

(int n)

//建立鍊錶;

return head;};

void

sreatch

(struct node *head,

int key)

//鍊錶查詢;

else

if(qi->next ==

null

)//如果樹尾節點;

else

//中間節點;

break

;//找到後結束繼續查詢;

}else

}}

#include

#include

struct node

;//自定義三個函式;

struct node *

creat

(int n)

;//鍊錶建立函式;

struct node *

sreach

(struct node *hear,

int key)

;//關鍵字查詢函式;

void

display

(struct node *head,

struct node *p)

;//結果輸出函式;

intmain()

return0;

}struct node *

creat

(int n)

//建立雙向鍊錶;

return

(head);}

;struct node *

sreach

(struct node *head,

int key)

return0;

};void

display

(struct node *head,

struct node *p)

**二:

#include

#include

struct node

;int

main()

for(i=

0; iq = q -> next;}}

return0;

}

資料結構實驗之鍊表九 雙向鍊錶

time limit 1000ms memory limit 65536kb submit statistic problem description 學會了單向鍊錶,我們又多了一種解決問題的能力,單鏈表利用乙個指標就能在記憶體中找到下乙個位置,這是乙個不會輕易斷裂的鏈。但單鏈表有乙個弱點 不能回指...

資料結構實驗之鍊表九 雙向鍊錶

注意對第乙個數的處理,卡在第乙個數的前驅結點上半天,最後對每個數字都進行了測試才發現了錯誤所在 problem description 學會了單向鍊錶,我們又多了一種解決問題的能力,單鏈表利用乙個指標就能在記憶體中找到下乙個位置,這是乙個不會輕易斷裂的鏈。但單鏈表有乙個弱點 不能回指。比如在鍊錶中有...

資料結構實驗之鍊表九 雙向鍊錶

1.知識點 雙向鍊錶 2.題意 按照給定的順序建立雙向鍊錶,按照關鍵字找到相應節點,輸出此節點的前驅節點關鍵字及後繼節點關鍵字 3.注意事項 注意當關鍵字為第乙個數和最後乙個數的情況 注意節點個數n等於1的情況 include include typedef struct str st st meo...