基本链表的应用
增 删 查 找 排 模糊查找
核心代码如下:
#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