C語言結構體及鍊錶定義

2021-07-22 02:11:05 字數 2251 閱讀 3209

最近在看《大話資料結構》,一邊看書一邊跑一下書中的案例,加深下理解。書中的案例都是c寫的,順便熟悉下c語言。

此處第三章線性表鏈式儲存:

typedef

struct node

node;

typedef

struct node *linklist; /* 定義linklist */

(鍊錶結點定義不是很理解,因此找了些資料。)

reference:

這個**講得很詳細,贊!)

:關於結構體struct node *next;這麼一句**,為什麼要這麼寫?寫成int * next;行不行?

:不行的。next是指向下乙個node,所以其型別必須是node。int * next只能指向int,而不能指向node。所以必須定義為node型別,但node是結構體,所以前面還得加上個struct。

reference:

struct stuff

;

struct stuff

zhangsan;

equals to

struct stuff

;struct stuff zhangsan;

structzhangsan;
把結構體名稱語調,這樣更簡潔,不過也不能定義其他同結構體變數了(?)

reference:

在c中最好用typedef定義乙個結構體型別

typedef

struct tagmystruct

mystruct;

tagmystruct是識別符號,mystruct是變數型別(相當於int, char等)。

上述語句實際上完成兩個操作:

1)定義乙個新的結構型別

struct tagmystruct

;

分析:tagmystruct稱為「tag」,即「標籤」,實際上是乙個臨時名字,不論是否由「typedef struct」關鍵字和「tagmystruct」一起構成這個結構型別,這個結構都存在。//不是很理解這句?

我們可以用struct tagmystruct varname來定義變數,但要注意,使用tagmystruct varname來定義變數是不對的,因為struct和tagmystruct合在一起才能表示乙個結構型別。

2)typedef為這個新的結構起了個名字,叫mystruct。

typedef

struct tagmystruct mystruct;

因此,mystruct實際上相當於struct tagmystruct,我們可以使用mystruct varname來定義變數。

那麼在宣告變數的時候就可以:stu stu1;(如果沒有typedef就必須用struct student stu1;來宣告)

這裡的stu實際上就是struct student的別名。stu==struct student

或者:

typedef

struct

stu;

那麼宣告變數為 stu stu1;

本篇開頭**段中的結構體中的typedef struct node的意思就是,為自定義的資料型別定義乙個新名字node。

第二句就是宣告自定義資料型別node。

struct student

;

c++中如果用typedef的話,又會造成區別:

struct student

stu1;//stu1是乙個變數

typedef

struct student2

stu2;//stu2是乙個結構體型別=struct student

reference:

如:

struct link

a;

C語言 鍊錶 結構體

目的 1.編寫手機 薄管理程式,用結構體實現下列功能 1 手機 薄含有姓名 宅電 手機3項內容,建立含有上述資訊的 簿。2 輸入姓名,查詢此人的號碼。3 插入某人的號碼。4 輸入姓名,刪除某人的號碼。5 將以上功能分別用子函式實現,編寫主函式,可以根據使用者的需要,呼叫相應的子函式。建議用結構體和鍊...

C語言結構體和C語言鍊錶

前言 對於c語言指標方面,因為博主目前還不能夠達到自己想要的水平,所以我就不在這裡班門弄斧了,現在總結一下結構體,等再過段時間,我把指標弄的爐火純青的成都的時候,我在來獻醜吧 0v0 三 結構體型別變數的賦值於初始化 四 結構體型別陣列的定義於引用 我們之前學過一些構造型別,陣列就是其中之一,但是陣...

C語言結構體定義

c語言結構體定義在我看來類似資料庫的表 如 include include struct st1 int id char name 30 char int score int main struct st1 s1 s1.id 1 strcpy s1.name,張三 s1.m s1.score 90 ...