gpt4 book ai didi

c - 双向链表问题?

转载 作者:行者123 更新时间:2023-11-30 14:27:07 24 4
gpt4 key购买 nike

我已经创建了一个双向链表。这个想法是反转在新行中输入的每个单词的输出,因此:

Hello\nAll\n.
.\nAll\nHello

这个想法是遍历我的列表直到找到 '\n' ,然后朝相反的方向走并打印出来,回到我离开的地方,继续遍历直到另一个新行,然后再次前进并打印等。

但是,我目前的实现似乎无法开始工作,并且遇到了困难,非常感谢提示或技巧!

typedef struct L { 
char val;
struct L *next;
struct L *prev;
}List;

List *insertList(char val, List *t1 );
List *createList(void);

int main(void) {
List *z = createList();
List *pos = z;
while (pos != NULL) {
while ( z->val != '\n' ) {
if (z == NULL)
break;
z = z->next;
pos = z;
}
while (z != NULL) {
printf("%c", z->val);
z = z->prev;
}
}
return 0;
}
List *createList(void) {
List *h = NULL;
char c;
do {
c =(char)getchar();
h = insertList(c, h);
}while(c != '.');
return h;
}
List *insertList( char val, List *t1) {
List *t = calloc(1, sizeof( List ));
t->prev = NULL;
t->val = val;
t->next = t1;
if (t1 != NULL) {
t1->prev = t;
}
return t;
}

最佳答案

我认为你的结构需要改变,没有理由用双链表来解决你的问题。

你的结构应该包含

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

那么你的主循环应该是这样的:

1) Read character data until delimiter into expandable buffer. Add NULL string terminator.
2) When delimiter is reached create node that points to buffer.
3) Insert NODE at HEAD of list.
4) When '.' is reached print each string starting from head of list.

关于c - 双向链表问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8189343/

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