單鏈表構造 插入 列印 逆序實現

2021-09-02 18:00:03 字數 1848 閱讀 2802

目錄

1、構造結點結構體

2、初始化乙個帶頭結點的單鏈表

3、往煉表中插入節點

4、將鍊錶逆序

5、列印節點資訊

完整程式:

主程式在下面

typedef struct linklist

linklist,*list;

data用於節點儲存資料,struct linklist *next是結點的指標域。linklist是結構體的別名,list是結構體的指標。

//初始化帶頭結點的單鏈表

linklist *createlinklist(void)

建立乙個指向頭結點的指標,將頭結點的值置為0,並且指標域指向空。

//將新結點插入單鏈表

void insertnode(linklist *current,int n)

}

//單鏈表逆序

void listreverse(list* head)

//注意:head->next才是頭結點,而不是head!head只是指向頭結點的指標

//因為頭指標與頭結點不同,頭結點即第乙個結點,頭指標是指向第乙個結點的指標。

//鍊錶中可以沒有頭結點,但不能沒有頭指標

//頭指標指向的頭結點的指標域指向空,頭變尾

head->next->next = null;

//頭結點的指標域指向p即尾結點。p為新的頭結點,所以head指向p

head->next = p;

}

//列印結點序列

void printlinklist(list head)

cout << endl;

}

將煉表頭節點傳入,當節點的指標域指向不為空時,輸出該節點的值,並將指標指向它的下乙個節點。

#include using namespace std;

//構造單鏈表結構體

typedef struct linklist

linklist,*list;

//初始化帶頭結點的單鏈表

linklist *createlinklist(void)

//將新結點插入單鏈表

void insertnode(linklist *current,int n)

}//列印結點序列

void printlinklist(list head)

cout << endl;

}//單鏈表逆序

void listreverse(list* head)

//注意:head->next才是頭結點,而不是head!head只是指向頭結點的指標

//因為頭指標與頭結點不同,頭結點即第乙個結點,頭指標是指向第乙個結點的指標。

//鍊錶中可以沒有頭結點,但不能沒有頭指標

//頭指標指向的頭結點的指標域指向空,頭變尾

head->next->next = null;

//頭結點的指標域指向p即尾結點。p為新的頭結點,所以head指向p

head->next = p;

}int main()

輸出結果:

單鏈表逆序(c實現)

單鏈表逆序作為常見的資料操作,具體實現有不同的版本,但是總歸需要考慮輸入結點為空 乙個結點和多個結點的情況。該逆序思想來自 劍指offer 另外乙個容易想到的逆序方式是,申請乙個頭結點head,然後把待逆序結點順序插入到頭結點後head next,最後返回head next即可。include in...

單鏈表逆序

include include typedef struct student student typedef struct list list,list list createlist void paixu list l 比較笨拙的一種方法 list reverse list l int main ...

單鏈表逆序

第二個題目是很經典的 單鏈表逆序 問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到乙個比較低的分數。如何在不使用額外儲存節點的情況下使乙個單鏈表的所有節點逆序?我們先用迭代迴圈的思想來分析這個...