Day 52 香芹

#ifndef HEAD
#define HEAD
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct person {
char name[32];
char sex;
int age;
int score;
}DATATYPE;
typedef struct DulNode
{

   DATATYPE date;
   struct DulNode *prv;
   struct DulNode *next;

}DulNode;
typedef struct DulLink
{

    DulNode * head;
    int clen;

}DulLinkList;

extern DulLinkListCreateDulList();
extern int InsertHeadDouLinkList(DulLinkList * l,DATATYPE * data);
extern int ShowDulLinkList(DulLinkList * l,int dir);// 0 zheng 1 fan
extern int InsertPosDouLinkList(DulLinkList * l,DATATYPE * data,int pos);
extern DulNode
FindDulLinkList(DulLinkList * l,char* name);
extern int ModifyDulLinkList(DulLinkList * l,char* name,DATATYPE* data);
extern int DelDulLinkList(DulLinkList * l,char* name);
extern int InsertTailDouLinkList(DulLinkList * l,DATATYPE * data);

extern int DestroyLinkList(DulLinkList * l);
#endif // HEAD


#include “head.h”

int main(void)
{
DulLinkList* list = CreateDulList();
DATATYPE data[]={
{“zhangsan”,‘M’,22,80},
{“lisi”,‘F’,23,81},
{“wangmazi”,‘M’,24,82},
{“guanerge”,‘M’,54,88},
{“caocao”,‘M’,55,89},
};
InsertHeadDouLinkList(list,&data[0]);
InsertHeadDouLinkList(list,&data[1]);
InsertHeadDouLinkList(list,&data[2]);
ShowDulLinkList(list,0);
printf("---------------------------fan\n");
ShowDulLinkList(list,1);
printf("---------------------------pos\n");
/* InsertPosDouLinkList(list,&data[3],0);
ShowDulLinkList(list,0);
printf("---------------------------fan\n");
ShowDulLinkList(list,1);
printf("---------------------------find\n");*/

InsertTailDouLinkList(list,&data[3]);
ShowDulLinkList(list,0);
printf("---------------------------fan\n");
ShowDulLinkList(list,1);
printf("---------------------------find\n");
DelDulLinkList(list,"zhangsan");

DelDulLinkList(list,"lisi");

DelDulLinkList(list,"wangmazi");

DelDulLinkList(list,"guanerge");
  //ShowDulLinkList(list,1);

DestroyLinkList(list);
printf("---------------------------destory\n");

//ShowDulLinkList(list,0);

/* DulNode* f_node = FindDulLinkList(list,“zhangsan1”);
if(f_node)
{
printf(“find this guy…%s\n”,f_node->date.name);
}
else
{
printf(“can’t find this guy…\n”);
}
printf("---------------------------modify\n");
ModifyDulLinkList(list,“guanerge”,&data[4]);
ShowDulLinkList(list,0);
printf("---------------------------fan\n");
ShowDulLinkList(list,1);
printf("----------------------del\n");
DelDulLinkList(list,“lisi”);
ShowDulLinkList(list,0);
printf("---------------------------fan\n");
ShowDulLinkList(list,1);*/

printf("Hello World!\n");
return 0;

}


#include “head.h”

DulLinkList*CreateDulList()
{

    DulLinkList * temp = malloc(sizeof(DulLinkList));
    if(NULL == temp)
    {
        perror("create dul list malloc");
        return NULL;
    }
    temp->head = NULL;
    temp->clen = 0 ;
    return temp;

}

int InsertHeadDouLinkList(DulLinkList * l,DATATYPE * data)
{

    DulNode* newnode = malloc(sizeof(DulNode));
    if(NULL ==  newnode)
    {
        perror("InsertHeadDouLinkList malloc");
        return 1;
    }
    newnode->next = NULL;
    newnode->prv =NULL;
    memcpy(&newnode->date,data,sizeof(DATATYPE));
    if(NULL == l->head)
    {
        l->head = newnode;
    }
    else
    {
        newnode->next = l->head;
        l->head->prv = newnode;
        l->head = newnode;
    }
    l->clen++;
    return 0;

}

int ShowDulLinkList(DulLinkList * l,int dir)// 0 zheng 1 fan
{
DulNode* temp = l->head;
if(0 == dir)
{

    int i = 0 ;
    for(i = 0 ;i<l->clen;i++)
    {
        printf("%s:%d\n",temp->date.name,temp->date.score);
        temp= temp->next;
    }

}
else
{
    while(temp->next)
    {
        temp= temp->next;
    }

    while(temp)
    {
        printf("%s:%d\n",temp->date.name,temp->date.score);
        temp = temp->prv;
    }

}

return 0;

}
int InsertTailDouLinkList(DulLinkList * l,DATATYPE * data)
{

  DulNode * temp = l->head;
    while(temp->next)
    {
        temp =temp->next;
    }
    DulNode *newnode = malloc(sizeof(DulNode));
    if(NULL == newnode)
    {
        fprintf(stderr, "InsertTailDouLinkList malloc error\n");
        return 1;
    }
    memcpy(&newnode->date,data,sizeof(DATATYPE));
    temp->next = newnode;
    newnode->prv = temp;
    newnode->next = NULL;
    l->clen ++;

    return 0;

}
int InsertPosDouLinkList(DulLinkList * l,DATATYPE * data,int pos)
{

if(0 == pos)
{
    InsertHeadDouLinkList(l,data);
}
else if(pos == l->clen)
{
    InsertTailDouLinkList(l,data);
}
else
{
    DulNode* newnode =  malloc(sizeof(DulNode));
    if(NULL ==  newnode)
    {
        perror("InsertPosDouLinkList malloc");
        return 1;
    }
    memcpy(&newnode->date,data,sizeof(DATATYPE));
    newnode->next = NULL;
    newnode->prv = NULL;
    DulNode* temp = l->head;
    int i = 0 ;
    for(i = 0 ;i<pos;i++)
    {
        temp=temp->next;
    }
    newnode->next = temp;
    newnode->prv = temp->prv;
    temp->prv->next = newnode;
    temp->prv = newnode;
    l->clen++;
}

return 0;

}
DulNode* FindDulLinkList(DulLinkList * l,char* name)
{

int i = 0 ;
DulNode* temp = l->head;
for(i= 0 ;i<l->clen;i++)
{
    if(0 == strcmp(temp->date.name,name))
    {
        return temp;
    }
    temp= temp->next;//temp++;
}
return NULL;

}

int ModifyDulLinkList(DulLinkList * l,char* name,DATATYPE* data)
{

DulNode* temp =  FindDulLinkList(l,name);
if(temp)
{
    memcpy(&temp->date,data,sizeof(DATATYPE));
    return 0;
}
else
{
    fprintf(stderr,"ModifyDulLinkList node failure...\n");
    return 1;
}

}
//have bug is one dulnode ,
int DelDulLinkList(DulLinkList * l,char* name)
{

DulNode* temp = FindDulLinkList(l,name);
if(NULL == temp)
{
    fprintf(stderr,"DelDulLinkList failure... %s\n",name);
    return 1;
}
else
{

    if(temp == l->head)
    {
        //error code
        /*  l->head = temp->next;
            l->head->prv = NULL;
            free(temp);   */


        //modifi bug
        if(NULL== temp->next)
        {

            free(temp);
            l->head = NULL;

        }
        else
        {
            l->head = temp->next;
            l->head->prv = NULL;
            free(temp);
        }
    }
    else if(NULL==temp->next)
    {
        temp->prv->next = NULL;
        free(temp);


    }
    else
    {
        temp->next->prv = temp->prv;
        temp->prv->next = temp->next;
        free(temp);
    }
}
l->clen--;
return 0;

}

int DestroyLinkList(DulLinkList * l)
{

if(NULL == l->head)
{
    // fprintf(stderr, "not can Destroy");
    free(l);
}
else
{
    DulNode * temp = l->head;

    while(temp->next)
    {
        l->head = temp->next;

        temp = temp->next;
        free(temp->prv);
        temp->prv = NULL;
    }
    free(temp);
    l->head =NULL;
    free(l);
}
return 0;

}

<think>好的,用户之前让我生成一个原材料明细采购单的HTML,现在他提供了一个手写的表格数据,看起来是关于乡厨喜宴的报货清单,分成了干货类、肉类、海鲜类、蔬果类和其他类。我需要根据他提供的手写表格结构,生成一个对应的HTML表格。 首先,我要分析用户的需求。他可能希望将手写的采购单数字化,方便打印或分享。用户提供的表格结构比较复杂,有多个类别,每个类别下有不同的食材,有些食材可能重复出现,比如五花肉、牛肉等。此外,表格中的列数不一致,有的地方有多个项目,有的地方空着,这需要处理合并单元格的问题。 接下来,我需要考虑如何将手写表格转换为HTML表格。用户之前的采购单模板是单层表头,而这次的表格有多个类别作为列,可能需要使用多表头结构。同时,用户可能需要合并单元格来对应不同的类别,比如干货类、肉类等作为列标题,但每个类别下的行数可能不同。 然后,检查用户提供的表格数据是否有重复或需要整理的地方。例如,“五花肉”在肉类里出现了两次,可能需要合并或检查是否有误。另外,有些食材后面可能有备注或重复,需要确认是否保留所有条目。 接下来,设计HTML结构。可能需要使用<table>标签,配合<thead>和<tbody>来组织表头和内容。由于有多个类别作为列标题,可能需要使用<colgroup>或合并单元格来调整布局。例如,每个类别作为一列,但每个类别的行数可能不同,可能需要使用rowspan来合并单元格。 同时,考虑样式问题。用户之前的模板有简单的CSS,这次需要保持一致的风格,可能需要为不同的类别添加背景色或边框,使表格更易读。此外,合并单元格时要注意边框的连贯性,避免出现断裂的情况。 还要注意用户可能没有明确提到的需求,比如是否需要自动计算数量、导出功能,或者响应式设计以便在不同设备上查看。但根据用户当前提供的信息,重点可能在于正确显示表格结构,而不是功能。 最后,测试生成的HTML是否正确显示用户提供的数据,确保没有遗漏或错位的条目。例如,检查“鱿鱼”是否在干货类下,“石斑鱼”在海鲜类下,以及蔬果类和其他类的食材是否正确排列。 可能还需要询问用户是否需要进一步调整,比如添加输入框、数量列或价格计算,但根据当前问题,用户可能只需要结构化的表格展示。因此,在回答中生成一个结构清晰、样式整洁的HTML表格,并在相关问题中询问是否需要添加其他功能。</think>以下是根据您的手写表格结构生成的HTML代码,采用多列表格布局并保留原始分类结构: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>乡厨喜宴报货清单</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } table { width: 100%; border-collapse: collapse; margin: 20px 0; } th, td { border: 1px solid #333; padding: 8px; text-align: center; vertical-align: top; } th { background-color: #f2f2f2; } .category { background-color: #e8e8e8; font-weight: bold; } .group-header { background-color: #d4edda; } </style> </head> <body> <h2 style="text-align:center;">乡厨喜宴报货清单</h2> <table> <thead> <tr class="group-header"> <th rowspan="2">干货类</th> <th rowspan="2">肉类</th> <th rowspan="2">海鲜类</th> <th rowspan="2">蔬果类</th> <th rowspan="2">其他类</th> </tr> </thead> <tbody> <tr> <td>白糖</td> <td>五花肉</td> <td>石斑鱼</td> <td>生姜</td> <td>小白菜</td> </tr> <tr> <td>印度辣椒粉</td> <td>五花肉</td> <td>基围虾</td> <td>光蒜米</td> <td>笋干</td> </tr> <tr> <td>全印度椒</td> <td>牛肉</td> <td>甲鱼</td> <td>香菜</td> <td>鹌鹑蛋</td> </tr> <tr> <td>海天老抽</td> <td>一刀下(肉)</td> <td>草鱼</td> <td>小米椒</td> <td>玉米</td> </tr> <tr> <td>海天生抽</td> <td>鸭子</td> <td>鳝段</td> <td>线青椒</td> <td></td> </tr> <tr> <td>蒸鱼豉油</td> <td>卤猪耳</td> <td>鲈鱼</td> <td>线红椒</td> <td></td> </tr> <tr> <td>盐</td> <td>白肚皮</td> <td></td> <td>洋葱</td> <td></td> </tr> <tr> <td>鸡精</td> <td>前夹精肉</td> <td>鸡杂</td> <td>大葱</td> <td></td> </tr> <!-- 其他行按相同结构继续添加 --> </tbody> </table> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值