• 大小: 8KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: C语言  数据结构  

资源简介

试利用单链表作为存放委托的数据结构(撮合队列),编写一模拟股票交易的程序,该程序有以下几个功能: 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

评论

共有 条评论