|
|
#2
寒风中的细雨2010-03-25 15:13
#include <stdio.h>
#include <stdlib.h> #include <conio.h> #define LEN sizeof( struct Tv ) typedef struct Tv { int m; //电视数量 int fee; //电视的售价 struct Tv *next; }*LinkList; //建立 空链表 带头结点 void Creat_List( LinkList &T ) { T = ( LinkList ) malloc ( LEN ); if( T == NULL ) { printf("没有空间分配!\n"); return ; } T->next = NULL; } //输入信息查询 (金额) void Check_List( LinkList &T ) { LinkList p; int f; printf("输入你要查询电视的售价:"); scanf("%d", &f); p = T->next; if( p == NULL ) printf("仓库中没有存货!\n"); while( p ) { if( p->fee == f ) { printf("售价为 %d 的电视仓库存货为 %d 台\n", f, p->m ); break; } p = p->next; if( p == NULL ) printf("售价为 %d 的电视仓库中没有存放\n", f ); } } //入库 插入结点 void Input_List( LinkList &T ) { LinkList p; int i, n; printf("输入你要插入的结点个数: "); scanf("%d", &n); printf("\n"); for( i = 0; i<n; i++) { p = ( LinkList ) malloc ( LEN ); printf("输入电视数量: "); scanf("%d", &p->m); printf("输入电视价格: "); scanf("%d", &p->fee); p->next = T->next; T->next = p; } } //出库 删除结点(金额) void Delete_List( LinkList &T ) { int m, f; LinkList p, r; printf("输入出库电视的金额:"); scanf("%d", &f); p = T->next; r = T; if( p == NULL ) printf("仓库中没有存货!\n"); else { while( p && (p->fee != f) ) { r = p; p = p->next; } if( !p ) printf("售价为 %d 的电视仓库中没有存放\n", f ); else { printf("输入你要取出电视的台数:"); scanf("%d", &m); if( m > p->m ) printf("造作失败! 存货不足!\n"); else if( m<p->m ) p->m = p->m - m; else r->next = p->next; } } } void main( ) { char c; LinkList T; Creat_List( T ); for( ; ; ) { printf("*请按下面的提示进行造作*\n"); printf("*查询链表链表请按 \'1\' 键*\n"); printf("*信息入库请按 \'2\' 键*\n"); printf("*信息出库请按 \'3\' 键*\n"); printf("*推出系统请按 \'4\' 键*\n"); c = getch(); putchar(c); putchar('\n'); switch( c ) { case'1': Check_List( T ); break; case'2': Input_List( T ); break; case'3': Delete_List( T ); break; case'4': exit(0); break; } } } |
【问题描述】
某百货公司仓库中有一批电视机,构成了一个单链表并存与计算机中,链表的结点指出同样价格的若干台。
【基本要求】
实现以下基本操作:
(1) 从键盘输入电视机的信息,建立电视机链表。
(2) 从键盘输入电视机的信息,实现电视机查询操作。
(3) 从键盘输入电视机的信息,实现电视机入库操作。
(4) 从键盘输入电视机的信息,实现电视机出库操作。