1、char NO; /商品编号 char namemax; /商品名称char count; /商品数量;2.应用程序功能开始运行时界面如下:仓库管理链表建立界面如下:仓库管理链表插入界面如下:仓库管理链表查询界面如下:按商品编号查询界面如下:按商品名称查询界面如下:仓库管理链表删除界面如下:仓库管理链表输出界面如下:3.输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。4.主要模块的算法描述流程图:5.源程序代码#include#includeiostreamint flag1=0;#include string.hstdlib.hw
2、indows.husing namespace std;typedef struct /仓库管理结点类型char NO10;char name30;char count5; DataType;typedef struct node /结点类型定义DataType data; /结点数据域struct node *next; /结点指针域 ListNode;typedef ListNode *LinkList;LinkList head;ListNode *p;LinkList CreateList(void);void InsertNode(LinkList head,ListNode *p)
3、;ListNode *ListFind(LinkList head);void DelNode(LinkList head);void PrintList(LinkList head);/*尾插法建立带头结点的仓库管理链表算法*/LinkList CreateList(void)LinkList head=(ListNode *)malloc(sizeof(ListNode); /申请头结点ListNode *p,*rear;char flag=y; /int flag=0; /结束标志置0rear=head; /尾指针初始指向头结点while (flag=)p=(ListNode *)mal
4、loc(sizeof(ListNode); /申新结点printf( 商品编号(10) 商品名称(30) 商品数量(5) n);-nn添加商品编号:ncinp-data.NO;n添加商品名称:data.name;n添加商品数量:data.count;rear-next=p; /新结点连接到尾结点之后rear=p; /尾指针指向新结点继续添加记录?(y/n):flag;next=NULL; /终端结点指针置空return head; /返回链表头指针/*在仓库管理链表head中插入结点*/void InsertNode(LinkList head,ListNode *p)ListNode *p1
5、,*p2;p1=head;p2=p1-next;while(p2!=NULL & strcmp(p2-data.NO,p-data.NO) /p2指向表的下一个结点p1- /插入p所指向的结点next=p2; /连接表中剩余的结点/*有序仓库管理链表的查找 */ListNode *ListFind(LinkList head)char num10;char name9;char pp;=n a. 按商品编号查询 n b. 按商品名称查询 n 请 选 择: p=head-pp;getchar();if (pp=a|pp=A请输入要查找的商品编号:num;while (p&strcmp(p-dat
6、a.NO,num)if (p=NULL)|strcmp(p-data.NO,num)0) p=NULL; /没有查到要查找的通讯信息elsebB 请输入要查找的商品名称:name;while(p&data.name,name)!=0) p=p-return p;/*仓库管理链表上的结点删除*/void DelNode(LinkList head)char jx;ListNode *p,*q;p=ListFind(head); /调用查找函数if (p=NULL)没有查到要删除的商品信息!return;if(p!=NULL) printf(真的要删除该商品吗?jx;if (jx=|jx=Yq=h
7、ead;while (q!=NULL)&(q-next!=p) q=q-q-next=p- /删除结点free(p); /释放被删结点空间删除成功!/*仓库管理链表的输出函数 */void PrintList(LinkList head) 商品编号 商品名称 商品数量 n-nwhile (p!=NULL)%15s%20s%23sn,p-data.name,p-data.count);-np=p- /后移一个结点void main()int choice,j=1;char Choice;while(j)nnnnntttt仓库管理系统nnttt*nttt* 1- 仓库管理链表建立 *nttt* 2- 仓库管理链表插入 *nttt* 3- 仓库管理链表查询 *nttt* 4- 仓库管理链表删除 *nttt* 5- 仓库管理链表输出 *nttt* 0- 退出仓库管理系统 *nttt请选择菜单号(0-5):choice;switch(choice)case 1:*n* 仓库管理链表建立 *nhead=CreateList( );flag1=1;system(clsbreak;case 2:if(flag1!=1) printf(请先建立表! Sleep(1500);* 仓库管理链表插入 *n商品编号(10) 商品名称(30) 商品数量n* n /申请新结点
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1