实名吃香菜 2021-11-26 22:14 采纳率: 75%
浏览 236
已结题

链表:02-初始化 函数原型:void init_list(GoodsList **L)

修改init-list函数,运行结果不通过,求解mom
题目要求:函数原型:void init_list(GoodsList **L)

其中 *L 为指向链表头结点的指针,L为指向链表头结点指针的地址,init_list首先创建链表的头结点,之后读取goodsinfo.txt(示例文件下载)中的商品信息,并初始化链表,函数执行后,需确保 *L 为指向链表头结点的指针。

init_list 实现商品信息链表的初始化,函数从已有的商品信息文件goodsinfo.txt(示例文件下载)中读入商品信息,并且分配内存保存至链表中。
为了方便在表头插入和删除结点的操作,经常在表头结点(存储第一个元素的结点)的前面增加一个结点,称之为头结点或表头附加结点。这样原来的表头指针由指向第一个元素的结点改为指向头结点,头结点的数据域为空,头结点的指针域指向第一个元素的结点。
只需写出init_list函数即可,相关结构及函数声明如下:




```#define GOODS_FILE_NAME "goodsinfo.txt"

```c



```#define MAX_ID_LEN 30
#define MAX_NAME_LEN 30
#define MAX_PRICE_LEN 30
#define MAX_DISCOUNT_LEN 30
typedef struct {
char goods_id[MAX_ID_LEN];
char goods_name[MAX_NAME_LEN];
int goods_price;
char goods_discount[MAX_DISCOUNT_LEN];
int goods_amount;
int goods_remain;
} GoodsInfo;
typedef struct node
{
GoodsInfo data;
struct node *next;
} GoodsList;

GoodsInfo read_goods_info();
void init_list(GoodsList **pL);
void destory_list(GoodsList **pL);
void destory_list_and_file(GoodsList **pL);
int save_to_file(GoodsList *L);
void output_one_item(GoodsList *L);
void output_all_items(GoodsList *L);
bool insert_item(GoodsList *L, GoodsInfo item, int choice);
bool delete_item(GoodsList *L, char* goods_id);
GoodsList* search_item(GoodsList *L, char* goods_id);
bool change_item(GoodsList *L, char* goods_id, GoodsInfo new_info);
void bubble_sort(GoodsList *L);
int read_line(char str[], int n);
```c


该部分声明已包含在 “lab52.h”中。

我的代码:

```c

```#include <stdio.h>
#include <stdlib.h>
#include "lab52.h" // 请不要删除本行头文件,否则检查不通过

extern int CurrentCnt; // 请不要删除本行的全局变量声明,否则检查不通过

void init_list(GoodsList **L) {
GoodsInfo info;
GoodsList head_list=(GoodsList)malloc(sizeof(GoodsList)),*p;
*L=head_list;
FILE *fp=fopen("goodsinfo.txt","r");
if(fp==NULL){
printf("error: file not found");

```c

```exit(0);

```c

```}

```c

```else {

```c

```while(!feof(fp)) {
fscanf(fp,"%s%s%d%s%d%d",info.goods_id,info.goods_name,&(info.goods_price),info.goods_discount,&(info.goods_amount),&(info.goods_remain));
p=(GoodsList *)malloc(sizeof(GoodsList));
head_list->next=p;
head_list->data=info;
CurrentCnt++;

```c

``` }
}
fclose(fp);
p->next=NULL;
printf("商品的链表文件已建立,有%d个商品记录\n", CurrentCnt);
}

求解决!

  • 写回答

3条回答 默认 最新

  • 实名吃香菜 2021-11-30 13:18
    关注

    求大佬帮忙解决一下mom

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 关于c++外部库文件宏的问题,求解
  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误