购物表(动态链表)+闹钟提醒(多线程)

本文探讨了动态链表在购物表中的应用,包括增删查找等基本操作,并介绍了如何结合多线程技术实现闹钟提醒功能。
摘要由CSDN通过智能技术生成

基本链表的应用

增 删 查 找 排 模糊查找

核心代码如下:


    	#include <stdio.h>
        #include <math.h>
        #include <string.h>
        #include <malloc.h>
        #include <stdlib.h>
        #include <pthread.h>
        #include <windows.h>
        #define len sizeof(stu)
        
        typedef struct student//定义一个结构体
        {
   
            char name[100];
            int num;
            double value;
            double length;
            double time;
            int hour;
            int minu;
            int sec;
        } ;
        
        typedef struct node//创建一个指针域,结构域
        {
   
            struct student date ;
            struct node *next;
        } stu;
        
        int z=1;
        int n;
        int Tips()//菜单
        {
   
            int p;
            printf("<----------请选择需要的功能---------->\n");
            printf("<----------1.输入一个新的购物表-------->\n");
            printf("<----------2.按时间删除一个新的纪录-->\n");
            printf("<----------3.按名称删除一个新的纪录-->\n");
            printf("<----------4.显示全部信息------------>\n");
            printf("<----------5.添加一个新的记录-------->\n");
            printf("<----------6.根据时间搜索------------>\n");
            printf("<----------7.姓名模糊搜索------------>\n");
            printf("<----------8.修改信息---------------->\n");
            printf("<----------9.距离排序---------------->\n");
            printf("<----------10.名称排序---------------->\n");
            printf("<----------0.退出------------------->\n");
            if(z==1)
                printf("<------30秒内未应答将自动关闭------------>");
            z--;
            printf("\n");
            scanf("%d",&p);
        
            return p;
        
        }
        
        stu*head=(stu *)malloc(len);
        
        stu * creat()//创建链表
        {
   
            stu *p1,*p2;
            int i,t,k=1;
            n=0;
            printf("请输入输入第一个物品信息\n");
            p1=head;
            printf("输入第%d个信息数目\n请输入物品的时间和内容格式如\n 物品名:pen(笔) \n 数量:1\n 单价2.0\n 距离5.0\n 日期:6.3\n 时10\n 分30\n 秒10\n",k++);
            printf("物品名称:");
            scanf("%s",p1->date.name);
            printf("数量:");
            scanf("%d",&p1->date.num);
            printf("单价:");
            scanf("%lf",&p1->date.value);
            printf("距离:");
            scanf("%lf",&p1->date.length);
            printf("日期月.日:");
            scanf("%lf",&p1->date.time);
            printf("时:");
            scanf("%d",&p1->date.hour);
            printf("分:");
            scanf("%d",&p1->date.minu);
            printf("秒:");
            scanf("%d",&p1->date.sec);
            n=n+1;
            if(n==1)
                head=p1;
            else
                p2->next=p1;
            p2=p1;
        
            p2->next=0;
        
            return head;
        }
        
        
        void print(stu * head)//显示
        {
   
            stu * p;
            printf("此时的%d个物品信息是:\n",n);
            p=head;
            if(head!=0)
            {
   
                while(p!=0)
                {
   
                    printf("物品名称%s\n数量%d\n单价%.2lf元\n距离%.2lf公里\n日期%.2lf\n时:%d h\n分:%d m\n秒:%d s\n",
                           p->date.name,p->date.num,p->date.value,p->date.length,p->date.time,p->date.hour,p->date.minu,p->date.sec);
                    p=p->next;
                }
            }
        }
        
        
        stu * del(stu * head,int hour,int minu,int sec)//删除(通过时间来删除)
        {
   
            stu *p1,*p2;
            if(head==0)
                printf("表空!\n");
            else
            {
   
                p1=head;
                while(p1->date.hour!=hour && p1->date.minu!=minu&&p1
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值