gpt4 book ai didi

c - 在 C 中将数组存储为链表

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

我正在使用 C 语言工作,但遇到了一些麻烦。我需要在链接列表中存储字符(字符串)数组。换句话说,将字符串转换为链表。基本上,每个节点一个字符。例如字符串dog\0,它不会在最后一个节点存储一个空字符,而是指向一个空指针来表示字符串的结束…… d->o->g->NULL

如果有建议就太好了,谢谢

int main(){
char *string;
string = malloc(sizeof(char)*100);
strcpy(string,"cheese");

node *list = NULL;
list = createNode(string[0]);

int i;
for(i=1;i<strlen(string);i++){
// this is where I'm stuck, the first char 'c'is in,
// I'm guessing i wanna loop through and
// store each char in a new node ?
}

return 0;
}

node *createNode(char data){
node *ptr = malloc(sizeof(node));

if (ptr == NULL)
{
return NULL;
}

ptr->data = data;
ptr->next = NULL;

return ptr;
}

最佳答案

以下是如何在 C 中执行此操作:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct node {
node *next;
char data;
};

node *createNode(char data, node *parent) {
node *ptr=(node*)malloc(sizeof(node));
if(ptr==NULL) {
fprintf(stderr, "Memory allocation error.\n");
exit(1);
}
if(parent!=NULL) parent->next=ptr;
ptr->data=data;
ptr->next=NULL;
return ptr;
}

int main() {
char str[]="cheese";

// Store the string to the list
node *first=NULL, *cur=NULL;
for(int i=0, len=strlen(str); i<len; i++) {
cur=createNode(str[i],cur);
if(first==NULL) first=cur;
}

// Now print it out
cur=first;
while(cur!=NULL) {
printf("%c\n", cur->data);
cur=cur->next;
}

_getwch();
return 0;
}

关于c - 在 C 中将数组存储为链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726186/

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