gpt4 book ai didi

c - 如何按顺序将元素从一个链表移动到另一个链表

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

我需要做的是复制已经填充了这些值的链表list1:

0000001  3  
0000002 2
0000003 1
0000004 1

并使用函数 CreateMenuList() 将它们粘贴到另一个名为 list2 的列表中,以便 list2 的每个元素都具有与特定编号匹配的 list1 的成员,ViewAllMenu() 的输出应该是这样的:

1    
0000004
0000003
2
0000002
3
0000001

现在我只写了这个基本概念:

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

struct Order {
char code[8];
int menu;
};

typedef struct NodeO {
struct Order order;
struct NodeO *next;
} TNode;

typedef TNode * NodeO;

struct Menu {
int code;
NodeO orders_list;
};

typedef struct NodeM {
struct Menu menu;
struct NodeM * next;
} TNodeM;

typedef TNodeM * NodeM;

//this function is for creating nodes for list1
NewOrder(struct Order p, NodeO * pp)
{
NodeO temp;

temp = malloc(sizeof(struct NodeO));
temp->order = p;
temp->next = *pp;

*pp = temp;

}

void main()
{
NodeO list1 = NULL;
NodeM list2 = NULL;

//supposing list1 is already filled
CreateMenuList(list1,list2);
ViewAllMenu(lista2);
}

假设我们已经使用标准输入调用 NewOrder 的函数填充了 list1CreateMenuList 函数应该如何修改 list2 并创建 n 成员来存储与菜单匹配的所有订单? ViewAllMenu 并不是真正的问题,因为它应该是一个带有 printf 的简单 while 循环。

最佳答案

这些是所有需要的功能:

void Load(NodeO * p)
{
FILE *f;
struct Order s;
char * buffer = malloc(sizeof(struct Order));

if(!(f=fopen("test.txt", "r")))
{
perror("Errore");
exit(EXIT_FAILURE);
}

while(fgets(buffer,sizeof(struct Order), f))
{
if(sscanf(buffer, "%s%d", s.code, &s.menu) == 2 )
{
NewOrder(s,p);
}
}
free(buffer);
fclose(f);
}

void InsertOrder(NodeM * pp, struct Order p)
{
NodeM s;

s = *pp;

while(s != NULL && (s->menu.code != p.menu))
s = s->next;

if( s == NULL)
{
s = (NodeM)malloc(sizeof(TNodeM));
s->next = *pp;
*pp = s;
s->menu.code = p.menu;
s->menu.list = NULL;
}

NewOrder(p, &s->menu.list);
}

void CreateMenuList(NodeO p, NodeM * pp)
{
while(p != NULL)
{
InsertOrder(pp, p->order);
p = p->next;
}
}



void ViewAllMenu(NodeM p)
{
NodeO s;
while(p != NULL)
{
s = p->menu.list;
printf("%d\n", p->menu.code);
while(s != NULL)
{
printf("\t%s\n", s->order.code);
s = s->next;
}
p = p->next;
}

}

关于c - 如何按顺序将元素从一个链表移动到另一个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50290867/

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