gpt4 book ai didi

c - 跟踪链表的开头和结尾

转载 作者:行者123 更新时间:2023-11-30 20:38:11 25 4
gpt4 key购买 nike

我需要跟踪链接列表的开头和结尾

但我想使用辅助结构:

typedef struct difl{
Lint start, end;
} dselist;

Lint 是这样定义的:

typedef struct slist* Lint;

typedef struct slist{
int value;
Lint next;
} Nodo;

这是在末尾添加元素的函数:

void snocs(dselist *l, int x){
Lint new;
new = (Lint) calloc(1,sizeof(Nodo));
if(new==NULL){
printf("Error in memory allocation\n");
return;
}
new->value = x;
new->next = NULL;

if((*l).start==NULL & (*l).end==NULL){
(*l).start = new;
(*l).end = new;
}else{
((*l).end)->next = new;
(*l).end = new;
}
}

我以这种方式调用该函数:

int main(){
Lint a = NULL;
Lint b = NULL;

dselist dl;

dl.start = a;
dl.end = b;

snocs(&dl, 5);
}

没有编译错误,只是似乎没有改变我列表中的任何内容。

最佳答案

此代码有效。

struct slist;

typedef struct slist* Lint;

typedef struct slist{
int value;
Lint next;
} Nodo;

typedef struct difl{
Lint start, end;

} dselist;

void snocs(dselist *l, int x){
Lint new;
new = (Lint) calloc(1,sizeof(Nodo));
if(new==NULL){
printf("Error in memory allocation\n");
return;
}
new->value = x;
new->next = NULL;

if((l->start==NULL) && l->end==NULL){
l->start = new;
l->end = new;
}else{
(l->end)->next = new;
l->end = new;
}
}

int main(){
Lint a = NULL;
Lint b = NULL;

dselist dl;

dl.start = a;
dl.end = b;

snocs(&dl, 5);
printf("%d\n", *dl.start); /* print 5*/

}

关于c - 跟踪链表的开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30222884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com