C 怎麼確定連結串列是否是空的,C 怎麼確定一個連結串列是否是空的

2021-06-25 14:47:35 字數 1427 閱讀 2971

1樓:

//解決這種問題很簡單,如果連結串列帶頭結點的話,那麼判空就是 p=head->next; p == null

如果不帶頭結點的話 那麼就是 head == null按照你題目的要求那麼就是帶有頭結點。

下面我給你寫個建立連結串列和列印連結串列的程式。

#include

#include

#include

typedef struct m_cargomcargo;

typedef struct m_node*mlist;

void createlink(mlist l)}void printlink(mlist l)printf("\n");

}void main()

2樓:克拉默與矩陣

// 帶頭結點單連結串列

typedef struct lnodelnode,*linklist;

bool isempty(linklist l)還需要什麼儘管提,我極力幫忙

3樓:

可以單獨定義一個表示連結串列資訊的連結串列描述符

typedef m_listdesc

這樣在所有對連結串列的操作函式中都應該加上對此操作符的修改和訪問等內容

4樓:匿名使用者

其實指標,比如這裡的struct m_node *next; 就是一個標識記憶體地址的數字。

如果你初始化的時候不給它設一個值,比如最常用的是0,也就是null(0就是null),用途就是標明這個指標還沒有分配記憶體空間。

一般連結串列由一個head或tail指標標識。

同樣,在沒有分配地址的時候,必須把這個指標設為0,否則就無法知道到底有沒有東西。

總結:每次新開一個指標的時候如果不是一宣告就分配地址,就一定要記得設成null,舉手之勞。

5樓:

p=head->next; p == null

6樓:匿名使用者

二樓沒仔細看,但演算法靠譜!

p=head->next; p == null

7樓:風若遠去何人留

連結串列區分帶頭節點和不帶頭結點兩種。假定連結串列節點指向下一節點的指標變數名為next。那麼區分情況,判斷空連結串列的方法為:

1 帶頭節點。

對於帶頭節點的連結串列,存在有不變的頭結點head,這個節點並不儲存任何資料,僅提供連結串列起始的一個標識。對於此類連結串列,判斷為空的條件為head->next==null。當head的next值為null,這時連結串列為空。

2 不帶頭結點。

不帶頭結點的情況,連結串列的起始節點是可能變化的,但無論如何變化,必須有一個節點指標型別的變數儲存實際上的第一個節點first。

當first為空時,連結串列即為空。這時判斷為空的條件為first==null。

c語言怎麼賦空值,C語言怎麼賦空值

c語言並沒有空值這個概念,一般習慣上,指標若是指向地址0便是空值,其他資料若內容是0便是空值。填充一大片記憶體區域可以使用memset函式,它的填充長度是按位元組計。整形 int a 0 字元型 char a 0 陣列 int a 20 memset a,0,sizeof int 20 c字串只需要...

C 在函式中建立連結串列,怎麼返回

但是,連結串列的復身體部分都是在函制數中創 建的,一旦函式執行完畢,這些身體不就被銷燬了嗎?每一個結點 都是動態new或malloc出來的,不會被銷燬如果用new在預設堆上建立,會被銷燬嗎?如果不會,那用標示符來指定delete呢?身體有關的標示符都是函式裡申請的區域性變數。結點的地址都被儲存在了連...

我的C盤滿了,怎麼格式化C盤,我的電腦C盤空間滿了怎麼清理啊

c盤滿和格式化沒關係,應該是分割槽的時候c盤空間定義小了。win7 以上的作業系統支援更改分割槽大小,不需要格式化,把c盤分割槽擴大一點就可以了。開啟工作管理員,找到計算機管理,選磁碟管理,然後把緊靠c盤的那個分割槽減小一點,然後就可以擴大c盤容量了。c盤如果格式化了,你的系統就沒有了,並且這個格式...