资源简介
试利用单链表作为存放委托的数据结构(撮合队列),编写一模拟股票交易的程序,该程序有以下几个功能:
1. 委托申请:
输入:每个委托包括四个数据项,股票编码( 4 位数字)、价格(浮点数)、数量(整数)、买 / 卖( B/S )
输出: a. 程序为每个委托产生一个唯一的序号( d ),该序号从 1 开始; b. 每笔成交包括:成交价格( %6.1f )、成交量( %4d )、新的委托序号( d )、匹配的委托序号( d )。
2. 查询未成交的委托:
输入:股票编码
输出:按撮合队列中委托的顺序,分别输出该股票未成交的委托,每个输出的委托包括:委托序号( d )、 股票编码 ( d ) 、 价格( %6.1f )、数量( %4d )、 B/S (买 / 卖 )
3. 委托撤消:
输入:要撤消的委托号。
输出:若成功,显示该委托信息,其中委托包括数据项:委托序号、股票编码、价格、数量、 B/S (买 / 卖 ) ;否则显示“ not found ”失败信息。
委托输入格式 : 1 股票编码 价格 数量 买卖
查询输入格式 : 2 股票编码
委托撤销 : .3 委托号
退出: 0
代码片段和文件信息
#include
#include
int count;
struct date
{
int orderid;
int stockid;
float price;
int quantity;
int bs;
struct date* next;
};
typedef struct date DATE;
typedef struct date* PDATE;
struct stock
{
int stockid;
struct stock* next;
struct date* b;
struct date* s;
};
typedef struct stock STOCK;
typedef struct stock* PSTOCK;
PDATE adress[10000];
PSTOCK ad[10000];
PSTOCK home;
PDATE setnew(PDATE p0int stockidfloat priceint quantityint bs)
{
PDATE p;
p=(PDATE) malloc (sizeof(DATE));
p->bs=bs; if(p0!=NULL)
{
p->next=p0->next;
p0->next=p;
}
else
p->next=NULL;
p->orderid=count++;
adress[p->orderid]=p;
p->price=price;
p->quantity=quantity;
p->stockid=stockid;
return p;
}
PSTOCK setnewstock(int stockid)
{
PSTOCK p=NULL;
p=(PSTOCK)malloc(sizeof(STOCK));
ad[stockid]=p;
p->b=NULL;
p->s=NULL;
p->stockid=stockid;
return p;
}
PSTOCK insert(PSTOCK homeint stockidfloat priceint bsint quantity)
{
PDATE p2;
if(ad[stockid]==NULL)
setnewstock(stockid);
PDATE p1=NULL;
if(bs==1)//大to小
{
p1=ad[stockid]->b;
if(p1==NULL)
{
ad[stockid]->b=setnew(NULLstockidpricequantitybs);
return ad[stockid];
}
else
{
while(1)
{
if(p1->price {
p2=setnew(p1p1->stockidp1->pricep1->quantityp1->bs);
p1->bs=bs;
int tempid;
tempid=p2->orderid;
p2->orderid=p1->orderid;
p1->orderid=tempid;
p1->price=price;
p1->quantity=quantity;
adress[p2->orderid]=p2;
adress[p1->orderid]=p1;
return ad[stockid];
}
else if(p1->next==NULL)
{
setnew(p1stockidpricequantitybs);
return ad[stockid];
}
p1=p1->next;
}
}
}
else//小to大
{
p1=ad[stockid]->s;
if(p1==NULL)
{
ad[stockid]->s=setnew(NULLstockidpricequantitybs);
return ad[stockid];
}
else
{
while(1)
{
if(p1->price>price)
{
p2=setnew(p1p1->stockidp1->pricep1->quantityp1->bs);
p1->bs=bs;
int tempid;
tempid=p2->orderid;
p2->orderid=p1->orderid;
p1->orderid=tempid;
p1->price=price;
p1->quantity=quantity;
adress[p2->orderid]=p2;
adres
相关资源
- 链表实验三
- 华科课设 空气质量监测系统
- 单链表的操作
- 计算法和查表法实现的CRC16校验码生成
- 数据结构 课程设计 排序算法的比较
- 学好算法与数据结构,程序猿的内功
- 广大实验报告
- 数据结构课程设计-图的存储与遍历
- 9散列表源程序+文档+说明+总结
- 7文本编辑数据结构课程设计 源程序
- 1运动会分数统计问题源程序+文档+说
- 数据结构课程设计之车厢调度
- 数据结构课程设计贪吃蛇
- 2019天勤数据结构视频.txt
- 山东大学软件学院数据结构课设——
- 中国石油大学北京 远程教育学院
- 数据结构上机实验指导李春葆版
- 玩转数据结构从入门到进阶.txt
- 数据结构与算法课程设计五子棋
- 用二叉树表示家谱关系并实现各种查
- 图基本操作的编程实现源码
- VC-easyx绘图游戏简易教程
- 中颖单片机SH79F3283P例程
- 数据结构第五版源码
- 东北大学软英数据结构实验
- 二叉树需要的的5个基本操作运算
- 数据结构实验,实现实数计算器功能
- 西安电子科技大学数据结构期末复习
- STM32 矩阵键盘扫描
- 数据结构编程题汇总
评论
共有 条评论