帶頭結點的單鏈表就地逆置

2021-08-10 12:09:42 字數 2021 閱讀 3259

6-1 帶頭結點的單鏈表就地逆置(10 分)

本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse_l(linklist &l)要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。

void listreverse_l(linklist &l);
其中l是乙個帶頭結點的單鏈表。

//庫函式標頭檔案包含

#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;

}void listreverse_l(linklist &l);

void listprint_l(linklist &l)

}int main()

listreverse_l(l);

listprint_l(l);

return 0;

}/* 請在這裡填寫答案 */

輸入格式

第一行輸入乙個整數n,表示單鏈表中元素個數,接下來一行共n個整數,中間用空格隔開。

輸出格式

輸出逆置後順序表的各個元素,兩個元素之間用空格隔開,最後乙個元素後面沒有空格。

4

1 2 3 4

4 3 2 1

本題**如下:

#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 lnodelnode, *linklist;

status listcreate_l(linklist &l,int n);

void listreverse_l(linklist &l);

void listprint_l(linklist &l);

status listcreate_l(linklist &l,int n)

return ok;

}void listreverse_l(linklist &l)

}void listprint_l(linklist &l)

printf("\n");

}int main()

listreverse_l(l);

listprint_l(l);

return 0;

}

這個題的想法是將節點分為三個一組,將第二個接在頭節點之後,再將第乙個節點接在第二個節點之後。完成上述操作之後將第

一、二個節點視為乙個整體(或者說是乙個節點),將第三個節點與上述整體重複上述操作。迷惑點在於需要事先儲存第乙個節點的下乙個節點,以及節點轉換間的先後關係,可以畫張圖來理解。

以上。

帶頭結點的單鏈表就地逆置

本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。void listreverse l link...

帶頭結點的單鏈表就地逆置

本題要求實現乙個函式,對帶有頭結點的單鏈表進行就地逆置。函式介面定義 void reverse linklist l l是帶頭結點的單鏈表的頭指標。裁判測試程式樣例 include include typedef int elemtype typedef struct lnode lnode,lin...

帶頭結點的單鏈表就地逆置

本題要求編寫函式實現帶頭結點的單鏈線性表的就地逆置操作函式。l是乙個帶頭結點的單鏈表,函式listreverse l linklist l 要求在不新開闢節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置後為4,3,2,1。函式介面定義 void listreverse...