화물 관리 시스템 (데이터 구조 체인 테이블)
30197 단어 데이터 구조
1 /* ( )*/
2 #include<string.h>
3 #include<stdio.h>
4 #include<stdlib.h>
5 #define MAXSIZE 100
6 typedef struct
7 {
8 char name[11],no[11];
9 int num;
10 }goods;
11
12 typedef struct node
13 {
14 goods data;
15 struct node *next;
16 }LNode;
17
18 /* */
19 void input(LNode *L)
20 {
21 int i,n;
22 LNode *r=L,*s;
23 goods x;
24 printf("
:");
25 scanf("%d",&n);
26 printf("
、 、 :
");
27 printf(" :aaa 100 100
");
28 printf("
");
29 for(i=1;i<=n;i++)
30 {
31 scanf("%s%s%d",x.name,x.no,&x.num);
32 s=(LNode*)malloc(sizeof(LNode));
33 s->data=x;
34 s->next=NULL;
35 r->next=s;
36 r=s;
37 }
38 }
39
40 /* */
41 void run_over(LNode *L)
42 {
43 LNode *p=L->next;
44 printf("
----------- -----------
");
45 printf("
");
46 while(p!=NULL)
47 {
48 printf("%5s%5s%4d
",p->data.name,p->data.no,p->data.num);
49 p=p->next;
50 }
51 printf("--------------------------------
");
52 }
53
54 /* */
55 LNode* search(LNode *L,goods x)
56 {
57 LNode *p=L->next;
58 while(p!=NULL&&(strcmp(p->data.no,x.no)<0))
59 {
60 p=p->next;
61 }
62 if(p!=NULL&&(strcmp(p->data.no,x.no)==0))
63 {
64 return p;
65 }
66 else
67 {
68 return NULL;
69 }
70 }
71
72 /* */
73 void insert(LNode *L,goods x)
74 {
75 LNode *p=L,*s;
76 while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)<0))
77 {
78 p=p->next;
79 }
80 s=(LNode*)malloc(sizeof(LNode));
81 s->data=x;
82 s->next=p->next;
83 p->next=s;
84 }
85
86 /* */
87 void storage(LNode *L,goods x)
88 {
89 LNode *p;
90 p=search(L,x);
91 if(p==NULL)
92 {
93 insert(L,x);
94 }
95 else
96 {
97 p->data.num=p->data.num+x.num;
98 }
99 }
100
101 /* */
102 void del(LNode *L,goods x)
103 {
104 LNode *p=L,*s;
105 while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)<0))
106 {
107 p=p->next;
108 }
109 while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)==0))
110 {
111 s=p->next;
112 p->next=s->next;
113 free(s);
114 }
115 }
116
117 /* */
118 void out(LNode *L,goods x)
119 {
120 int j;
121 LNode *p;
122 p=search(L,x);
123 if(p==NULL)
124 {
125 printf("
!
");
126 }
127 else if(p->data.num>x.num)
128 {
129 p->data.num=p->data.num-x.num;
130 }
131 else if(p->data.num==x.num)
132 {
133 del(L,x);
134 }
135 else if(p->data.num<x.num)
136 {
137 printf("
, %d。
",p->data.num);
138 printf("( 1, 0。)
");
139 printf(" :");
140 scanf("%d",&j);
141 if(j==1)
142 {
143 del(L,x);
144 printf("
! !
");
145 }
146 else
147 {
148 printf("
!
");
149 }
150 }
151 }
152
153 void menu()
154 {
155 printf("**********************************
");
156 printf("* *
");
157 printf("* 1----------------- *
");
158 printf("* 2----------------- *
");
159 printf("* 3----------------- *
");
160 printf("* 4--------------------- *
");
161 printf("* 5--------------------- *
");
162 printf("* 0------------------------- *
");
163 printf("**********************************
");
164 }
165
166 int main()
167 {
168 goods x;
169 int sel;
170 LNode *L,*p;
171 L=(LNode *)malloc(sizeof(LNode));
172 do
173 {
174 menu();
175 printf(" ( :1):
");
176 scanf("%d",&sel);
177 switch(sel)
178 {
179 case 1:printf("
!
");
180 input(L);
181 break;
182 case 2:printf("
!
");
183 run_over(L);
184 break;
185 case 3:printf("
!
");
186 printf("
:
");
187 printf(" :");
188 scanf("%s",x.no);
189 p=search(L,x);
190 if(p==NULL)
191 {
192 printf("
。
");
193 }
194 else
195 {
196 printf("
");
197 printf("%5s%5s%4d
",p->data.name,p->data.no,p->data.num);
198 }
199 break;
200 case 4:printf("
!
");
201 printf("
、 、 :
");
202 printf("
");
203 scanf("%s%s%d",x.name,x.no,&x.num);
204 storage(L,x);
205 break;
206 case 5:printf("
!
");
207 printf("
、 、
");
208 printf("
");
209 scanf("%s%s%d",x.name,x.no,&x.num);
210 out(L,x);
211 break;
212 }
213 }while(sel!=0);
214 printf(" , !
");
215 return 0;
216 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.