簡體   English   中英

在C中的鏈表中的鏈表上運行

[英]Running on linked list inside of a linked list in C

假設我有一個結構用作鏈表(單面),可以說

struct s1
{
   char *word;
   struct s1 *next;
};

現在,我制作另一個也應該是鏈表的結構,它具有第一個結構:

struct s2
{
    int b;
    struct s1 *firstfroms1;
    struct s2 *next;
}

在我的程序中,我想在s2上運行,但是在其中我要在firstfroms1導致的所有元素上運行。 例如,如果s2中的列表在2次之后結束,並且第一個列表中有s1中的4個元素,那么我想在這4個元素上運行。

問題是,當我編寫list-> firstfroms1-> word時,我只能訪問s1的第一個。 如何移動該“索引”,直到在s1中達到NULL?

謝謝

循環遍歷s2的列表,如果當前節點包含s1結構的列表( firstfroms1為非null),則在繼續之前遍歷它們。 因此,在一個循環中循環。

您不能使用標准的鏈接列表語義來執行此操作,其中每個列表元素都可以為您提供下一個元素或null。 當您“側分支”到s1列表時,這些列表元素不知道它們屬於s2,一旦到達列表的末尾,他們將不知道要做什么。

您只有兩個嵌套列表的知識僅在s2中可用,因此您只能在s2上進行迭代。

但是,那么您必須返回s2元素。 假設您在迭代時更新firstFromS1,則需要額外的解除引用操作才能從當前s2元素中獲取當前s1元素,例如*(some_S2.firstFromS1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM