C结构段溢出



我有一个C语言的程序,它创建了一个由两部分组成的单链表
我使用结构来生成列表、节点和节点数据。结构定义为

struct TList {
    struct LNode* first;
    struct LNode* last_left;
};
struct LNode {
    struct LData* data;
    struct LNode* next;
};

列表看起来像[ A B C ][ D E ]哪里CCD_ 2和CCD_ 3

以下功能可重置链接列表中的光标。

void reset_list_cursor(struct TList *list) {
    struct LNode *temp, *temp1, *temp2;
    int i = (list_left_size(list) - 1 );
    for (i; i >= 0; i--) {
        temp = list->last_left;
        temp1 = list->first;
        if (temp != NULL) {
            temp2 = temp1->next;
            while (temp2 != temp) {
                temp1 = temp1->next; 
                temp2 = temp2->next;
            }
            list->last_left = temp1;
        }
    }
    list->last_left = NULL;
}

然而,我遇到了一个分割错误,我已经通过以下几行缩小了范围。。。

void reset_list_cursor(struct TList *list) {
    temp1 = temp1->next; 
    temp2 = temp2->next;

我知道您永远不能调用temp = temp->next->next,但当您创建一个结构来代替temp->next时,它不应该工作吗?

首先,temp->next->next没有错,它在语法上也是正确的。在任何涉及循环的情况下,你必须确保在进入循环时检查"next"是否为null。包括一个条件,当你进入循环时,检查temp->next==null。这将为你创造奇迹。

这有点像while(temp1->next!=NULL && temp2->next!=NULL)

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新