資料結構 PTA 鍊錶逆置 另類堆疊 函式 鍊錶

2022-07-09 02:15:13 字數 2610 閱讀 1570

本題要求實現乙個函式,將給定單向鍊錶逆置,即表頭置為表尾,表尾置為表頭。鍊錶結點定義如下:

struct

listnode ;

struct listnode *reverse( struct listnode *head );
其中head是使用者傳入的鍊錶的頭指標;函式reverse將鍊錶head逆置,並返回結果鍊錶的頭指標。

#include #include 

struct

listnode ;

struct listnode *createlist(); /*

裁判實現,細節不表

*/struct listnode *reverse( struct listnode *head );

void printlist( struct listnode *head )

printf("\n

");}int

main()

/*你的**將被嵌在這裡

*/

1 2 3 4 5 6 -1

6 5 4 3 2 1

在只有尾指標的情況下完成倒序。有點燒腦,理清之後很簡單

配合如下**食用:

這只是前兩次逆置的實現,後續同理。

struct listnode *reverse( struct listnode *head )

return

s1;};

在棧的順序儲存實現中,另有一種方法是將top定義為棧頂的上乙個位置。請編寫程式實現這種定義下堆疊的入棧、出棧操作。如何判斷堆疊為空或者滿?

bool

push( stack s, elementtype x );

elementtype pop( stack s );

其中stack結構定義如下:

typedef int

position;

typedef

struct snode *ptrtosnode;

struct

snode ;

typedef ptrtosnode stack;

注意:如果堆疊已滿,push函式必須輸出「stack full」並且返回false;如果佇列是空的,則pop函式必須輸出「stack empty」,並且返回error。

#include #include 

#define error -1typedef

intelementtype;

typedef

enum

operation;

typedef

enum bool

;typedef

intposition;

typedef

struct snode *ptrtosnode;

struct

snode ;

typedef ptrtosnode stack;

stack createstack(

intmaxsize )

bool

push( stack s, elementtype x );

elementtype pop( stack s );

operation getop();

/*裁判實現,細節不表

*/void printstack( stack s ); /*

裁判實現,細節不表

*/int

main()

}return0;

}/*你的**將被嵌在這裡

*/

4

poppush 5

push 4

push 3

poppop

push 2

push 1

push 0

push 10

end

stack empty

3 is out

4 is out

stack full

0 1 2 5

注意data是個陣列!!!

bool

push( stack s, elementtype x )

else

}elementtype pop( stack s )

else

return s->data[--(s->top)];

}

資料結構 鍊錶的逆置

將乙個鍊錶進行逆置 如 10 20 30 40 逆置後40 30 20 10 分析 方法一 新建鍊錶 遍歷舊鍊錶,將舊鍊錶的結點依此頭插到新鍊錶中。上 include include typedef struct node node 建立結點 node buynode int data 用建立新鍊錶...

資料結構與演算法 鍊錶逆置

這兩天溫度直降,看書的時候手總是不自覺的抖,索性自學完了鍊錶一章 今天重寫了鍊錶逆置的題 發現鍊錶題只要畫圖,弄清邏輯關係,還是很簡單的 希望能持之以恆 include includetypedef struct nodenode typedef struct node linklist linkl...

資料結構69 鍊錶逆置,鍊錶反轉,鍊錶翻轉

鍊錶翻轉,簡單地理解,就是將鍊錶的頭部結點變為鍊錶的尾部結點,與此同時將原鍊錶的尾部結點變成頭部結點。如下圖所示 圖 1 鍊錶翻轉示意圖 將鍊錶進行翻轉的方法有多種,本節給大家介紹兩種實現方法。實現鍊錶翻轉最直接的方法就是 從鍊錶的頭部開始遍歷每個結點,改變每個結點的指向,即將原本指向下乙個結點的指...