任务清单(数据结构作业设计)

编程入门 行业动态 更新时间:2024-10-28 10:29:19

任务清单(数据结构<a href=https://www.elefans.com/category/jswz/34/1771149.html style=作业设计)"/>

任务清单(数据结构作业设计)

设计背景

生活当中,我们每天需要处理各种各样的事务,随着处理事务的增多,我们也会出现遗忘的现象,为了避免遗忘一些重要的事情,我们可将这些任务记录下来,形成一个任务清单,并且按照任务的重要性给任务编写优先级。

设计功能
任务清单的功能有:

添加任务:

首先输入添加任务的个数,然后按照显示的提示,分别输入任务的时间,优先级序号(优先级高、中、低序号分别为1、2、3),以及任务内容。

删除已完成任务。

按照任务优先级排序:

即按照任务优先级的高、中、低的顺序将任务排序,先显示比较重要的任务。
4.
显示当前任务表。

设计代码
任务清单代码主要通过链表实现,主要有创建链表,运用选择法进行链表中内容的排序,删除链表,显示链表。

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef int Status;

建立结构体,结构体中元素有日期(年、月、日),任务优先级序号,任务(定义为字符),以及next域。

typedef struct LNode{int year,month,day;int i;//任务优先级序号char task[1000];//任务struct LNode *next;
}LNode,*LinkList; 

通过创建链表L创建任务表,链表中逆序输入各任务

Status CreatList_L(LinkList &L,int num)
{//逆序输入n个元素的值LNode *p;int j;int y,m,d,t;int i;L=(LinkList) malloc(sizeof(LNode));L->next=NULL;for(j=num;j>0;--j){p=(LinkList)malloc(sizeof(LNode));printf("任务%d:\n",j);printf("请输入添加任务日期\n");scanf("%d %d %d",&y,&m,&d);p->year =y;p->month =m; p->day =d;printf("任务优先级为:1.高;2.中;3.低\n");printf("请输入任务优先级序号\n");scanf("%d",&i);p->i=i;printf("请输入任务\n");scanf("%s",p->task  );printf("\n");p->next =L->next;L->next=p;} }

将任务按照选择法进行优先级排序,选择法排序链表中的数据。

/*任务按照选择法进行优先级排序*/
Status CompareTask(LinkList &L)
{LNode *head,*prep1,*p1,*prep2,*p2,*premin,*min,*temp;head=L;if(L->next ==NULL||L->next ->next==NULL){return OK;}for(prep1=head,p1=prep1->next ;p1->next !=NULL;prep1=prep1->next ,p1=prep1->next ){premin=prep1;min=p1;//保存最小节点 for(prep2=p1,p2=prep2->next ;p2!=NULL;prep2=prep2->next ,p2=prep2->next ){if(min->i >p2->i ){premin=prep2;min=p2;}}//找到两者之间的最小值 if(p1!=min){if(p1->next ==min)//两个相比较的值相邻{temp=min->next ;prep1->next =min;min->next =p1;p1->next =temp;} else//两个比较的数不相邻 {temp=min->next ;prep1->next =min;min->next =p1->next ;premin->next =p1;p1->next =temp;}}}printf("任务已排序\n");} 

任务表的显示

 //任务表的显示
void ListPrint_L(LinkList L,int num)
{LNode *p;int i;p=L->next;for(i=1;i<=num;i++){printf("----------------------------------------\n");printf("任务%d:\n",i);printf("时间:%d %d %d\n",p->year,p->month,p->day);printf("优先级:%d\n",p->i);printf("任务:%s",p->task );printf("----------------------------------------\n");p=p->next;}}

删除任务

/*删除任务*/
Status ListDelet_L(LinkList &L,int i,int &num)
{LNode *p,*q;int j;p=L;j=0;while (p->next&&j<i-1){p=p->next;++j;} if(!p||j>i-1)return ERROR;q=p->next;p->next=q->next;free(q);num-=1;printf("任务已删除\n");return num;}

主函数

main(){LinkList L,T;int i,k,num,flag;printf("请选择功能:\n");printf("1.添加任务;2.删除已完成任务;3.按照任务优先级排序;4.显示当前任务表;5.结束\n");for(k=1;;k++){  printf("\n请进行功能的选择:"); scanf("%d",&flag);if(flag==1){printf("请输入添加任务个数\n");scanf("%d",&num);printf("\n");CreatList_L(L,num);}if(flag==2){printf("请输入删除任务序号\n");scanf("%d",&i);ListDelet_L(L,i,num);}if(flag==3){CompareTask(L);}if(flag==4){ListPrint_L(L,num);}if(flag==5)break;}return OK;} 

代码运行
任务清单运行界面

添加三项任务

将三项任务按优先级排序并输出当前任务列表


删除第二项任务并输出列表

结束功能

更多推荐

任务清单(数据结构作业设计)

本文发布于:2023-07-27 22:11:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1227553.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:作业   数据结构   清单

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!