gpt4 book ai didi

c - 将数据从链表移动到队列 [c]

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:25 25 4
gpt4 key购买 nike

所以我是一个自学者,我被困在这里。我想要完成的是创建一个包含一些数据的链表,然后从链表中随机选择一个节点,更改一些数据然后将其移动到队列(队列也是使用链表实现的)

我也不确定如何编写我的结构。这是我的结构。

struct Apps{
int id;
int size;
char name;
float xronos_eiswdou;
char condition;
int xronos_ekteleshs;
struct Apps *next, *next1;
}*rear, *front;

我确定这是错误的,但我不知道如何修复它。

这是我目前的职责。

void push(struct Apps *head)
{
struct Apps *temp;
struct Apps *temp1;
temp1=(struct Apps *)malloc(sizeof(struct Apps));
temp1->id = temp->id;
temp1->size = temp->size;
temp1->name = temp->name;
temp1->xronos_eiswdou = temp->xronos_eiswdou;
temp1->condition = temp->condition;
temp1->xronos_ekteleshs = temp->xronos_ekteleshs;
temp1->next = head;
if (front == NULL)
{
front=temp1;
front->next1=NULL;
rear=front;
}
else
{
front->next1=temp1;
front=temp1;
front->next1=NULL;
}
}

这是我向链表添加数据的主要代码:

for(step = 0; step < 100; step++)
{
int r = rand() % 100+1;
if(r < 31){
int r1 = rand() % 100+1;
aa = r1;
int r2 = rand() % 100+1;
bb = r2;
int r3 = rand() % 3;
if(r3 == 0){
cc = 'l';
}
else if(r3 == 1 ){
cc = 'b';
}
else if( r3 == 2 ){
cc = 'c';
}
dd = (double)seconds/CLOCKS_PER_SEC;
ee = 'a';
ff = -1;
insert_new(aa, bb, cc, dd, ee, ff);
}
else if(r > 30 && r < 51){
pickRandom(head); /*picking a random node and changing some data*/
/*Here I need a function which moves the data of the above node to a queue*/
}
}

长话短说,我需要一个将数据从链表移动到队列的函数!感谢任何帮助并原谅我的问题,我正在自己学习东西:/

编辑

我尝试了一些似乎有效的方法,很好...这是我的结构:

    struct Apps{
int id;
int size;
char name;
float xronos_eiswdou;
char condition;
int xronos_ekteleshs;
struct Apps *next;
};

struct Queue
{
int id1;
int size1;
char name1;
float xronos_eiswdou1;
char condition1;
int xronos_ekteleshs1;
struct Queue *next;
struct Queue *front;
struct Queue *rear;
};

这是我的功能:

struct Queue *start = NULL;
struct Queue *front = NULL;
struct Queue *rear = NULL;

void push()
{
struct Apps *temp;
struct Queue *temp1;
temp1=(struct Queue *)malloc(sizeof(struct Queue));
temp1->id1 = temp->id;
temp1->size1 = temp->size;
temp1->name1 = temp->name;
temp1->xronos_eiswdou1 = temp->xronos_eiswdou;
temp1->condition1 = temp->condition;
temp1->xronos_ekteleshs1 = temp->xronos_ekteleshs;
temp1->next = start;
if (front == NULL)
{
front=temp1;
front->next=NULL;
rear=front;
}
else
{
front->next=temp1;
front=temp1;
front->next=NULL;
}
}

程序运行没有错误,但它崩溃了,所以又出问题了!

最佳答案

所以你的问题是

1.一个列表包含一些随机数量的节点

2.必须将列表中修改的元素收集到队列中(这是另一个列表)

要解决这个问题,请修改您的结构,

 struct Apps{
int id;
int size;
char name;
float xronos_eiswdou;
char condition;
int xronos_ekteleshs;
struct Apps *next;
};

struct Queue
{
Struct Apps *node;
struct Queue * next;
};

因此,现在您将在队列 (Queue_struct) 中收集列表 (Apps) 中元素的原始列表和修改后的节点 (Apps 列表),这是使用 LinkedList 实现的。

关于c - 将数据从链表移动到队列 [c],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978543/

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