可不可以帮我分析下每部过程什么意思,有的看不明白
大佬们我刚学这东西、可不可以帮我分析下每部的意义,呜呜呜哭了
#include<stdio.h>
#include<malloc.h>//用于申请一块连续的指定大小的内存块区域以void*类型返
回分配的内存区域地址//
#include<string.h>//产生字符串//
#define MaxSize 500//线性表定义不超过500个元素//
typedef struct
{
int a;
char name[20];
}ElemType1;
typedef struct
{
ElemType1 data[MaxSize];
int length;
}SqList;
typedef struct
{
int b,c;
char name[20];
}ElemType2;
typedef struct LNode
{
ElemType2 data;
struct LNode *next;
}LinkNode;
void CreatList(SqList *&L,ElemType1 a[],int n)
{
int i=0,k=0;
L=(SqList *)malloc(sizeof(SqList));
while(i<n)
{
L->data[k]=a[i];
k++;
i++;
}
L->length=k;
}
void DispList(SqList *L)
{
for(int i=0;i<L->length;i++)
printf("%d %s \n",L->data[i].a,L->data[i].name);
printf("\n");
}
bool ListInsert(SqList * &L,ElemType1 e)
{
if(L->length==MaxSize)
return false;
else
{ L->data[L->length]=e;
L->length++;
return true;
}
}
void CreateListF(LinkNode * &L,ElemType2 a[],int n)
{
LinkNode *s,*r;
L=(LinkNode *)malloc(sizeof(LinkNode));
r=L;
for(int i=0;i<n;i++)
{
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void InitList(LinkNode * &L)
{
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
}
void DispList(LinkNode *L)
{
LinkNode *p=L->next;
printf("\n");
while(p!=NULL)
{
printf("%d ",p->data.b);
printf("%s ",p->data.name);
printf("%d\n",p->data.c);
p=p->next;
}
printf("\n");
}
int LocateElem(LinkNode *L,ElemType2 e)
{
int i=1;
LinkNode *p=L->next;
while(p!=NULL )
{ if (strcmp(p->data.name,e.name)==0 && p->data.b==e.b)
break;
p=p->next;
i++;
}
if(p==NULL)
return(0);
else
return(i);
}
void LocateElem1(LinkNode *L,ElemType2 e)
{
LinkNode *p=L->next;
while(p!=NULL )
{ if (p->data.b==e.b)
{
printf("%d",p->data.b);
printf("%s",p->data.name);
printf("%d",p->data.c);
}
p=p->next;
}
}
void ListPush(LinkNode *&L,ElemType2 e)
{
int i;
int j=1;
LinkNode *p,*s;
i=LocateElem(L,e);
if(i==0)
{
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=e;
s->next=L->next;
L->next=s;
}
else
{
p=L->next;
while(j<i)
{
p=p->next;
i++;
}
p->data.c=p->data.c+e.c;
}
}
void ListPop(LinkNode *&L,ElemType2 e)
{
int i;
int j=1;
LinkNode *p;
i=LocateElem(L,e);
if(i==0)
{
printf("库中没有该文具。\n");
}
else
{
p=L->next;
while(j<i)
{
p=p->next;
i++;
}
if(p->data.c<e.c)
printf("库中该文具数量不够。\n");
else
p->data.c=p->data.c-e.c;
}
}
int main()
{
int a;
LinkNode *Q;
SqList *L;int n;int s1,s2;
ElemType1 b[20],e;
ElemType2 c[20],e1;
printf(" 文具店货品管理系统 \n");
printf(" 主菜单 \n");
printf(" <1>设置文具分类表 \n");
printf(" <2>初始化文具表 \n");
printf(" <3>文具入库 \n");
printf(" <4>文具出库 \n");
printf(" <5>查询文具信息 \n");
printf(" <6>显示文具信息 \n");
printf(" <7>添加新文具类别 \n");
printf(" <0>退出系统 \n");
printf("请选择<1,2,3,4,5,6,7,0> \n");
while(1)
{
scanf("%d",&a);
switch(a)
{
case 1: printf("请输入文具类别总数:\n");
scanf("%d",&n);
for(s1=0;s1<n;s1++)
{
printf("请输入文具分类号:\n");
scanf("%d",&b[s1].a);
printf("请输入文具分类名称:\n");
scanf("%s",&b[s1].name);
}
CreatList(L,b,n);
DispList(L);
break;
case 2: printf("请输入文具总数:\n");
scanf("%d",&n);
for(s2=0;s2<n;s2++)
{
printf("请输入文具分类号:\n");
scanf("%d",&c[s2].b);
printf("请输入文具分类名称:\n");
scanf("%s",&c[s2].name);
printf("请输入文具数量:\n");
scanf("%d",&c[s2].c);
}
CreateListF(Q,c,n);
break;
case 3: printf("请输入文具分类号:\n");
scanf("%d",&e1.b);
printf("请输入文具分类名称:\n");
scanf("%s",&e1.name);
printf("请输入文具数量:\n");
scanf("%d",&e1.c);
ListPush(Q,e1);
break;
case 4: printf("请输入文具分类号:\n");
scanf("%d",&e1.b);
printf("请输入文具分类名称:\n");
scanf("%s",&e1.name);
printf("请输入文具数量:\n");
scanf("%d",&e1.c);
ListPop(Q,e1);
break;
case 5: printf("请输入文具分类号:\n");
scanf("%d",&e1.b);
printf("Number StockName amount \n");
LocateElem1(Q,e1);
break;
case 6: DispList(Q);
break;
case 7: printf("请输入文具分类号:\n");
scanf("%d",&e.a);
printf("请输入文具分类名称:\n");
scanf("%s",&e.name);
ListInsert(L,e);
DispList(L);
break;
case 0:return 0;
}
}
}