gpt4 book ai didi

c - 旋转链接列表

转载 作者:行者123 更新时间:2023-11-30 14:29:15 26 4
gpt4 key购买 nike

我想旋转包含数字的链接列表。 123 应该旋转到 231。函数创建了 23 但最后一个字符保持为空,为什么?

typedef struct node node;  
struct node{
char digit;
node* p;
};

void rotate(node** head){

node* walk= (*head);
node* prev= (*head);
char temp= walk->digit;

while(walk->p!=NULL){

walk->digit=walk->p->digit;

walk= walk->p;
}

walk->digit=temp;
}

如何创建列表:

node* convert_to_list(int num){ 
node * curr, * head;

int i=0,length=0;

char *arr=NULL;

head = NULL;

length =(int) log10(((double) num))+1;
arr =(char*) malloc((length)*sizeof(char)); //allocate memory

sprintf (arr, "%d" ,num); //(num, buf, 10);

for(i=length;i>=0;i--) {
curr = (node *)malloc(sizeof(node));
(curr)->digit = arr[i];
(curr)->p = head;
head = curr;
}

curr = head;

return curr;
}

最佳答案

您的链接列表实际上有 4 个元素。

您应该更改此行:

for(i = length; i >= 0 ; i--) {

至:

for(i = length - 1; i >= 0; i--) {

因为在前一行中,您将离开数组(您将在第一次迭代时访问 arr[length])。

通过此更改,您的 rotate 函数可以正常工作。

关于c - 旋转链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057729/

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