1、数据结构课程设计线性表1、某软件公司大约有30名员工,每名员工有姓名、工号、职务等属性,每年都有员工离职和入职。把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。#include stdafx.h#include stdio.h#include stdlib.h#include malloc.h#define SIZE sizeof(employee)typedef struct employee char name20 ; int number ; char post20 ; employee *next ;employe
2、e ;int n ;employee *s ;void InitComp() printf(start create:n) ; int i = 0 ; employee *p , *q =NULL ; while(i name),20); printf(please enter numbern); scanf_s(%d,&(p-number); printf(please enter postn); scanf_s(%s,&(p-post),20); p-next = NULL ; i+ ; if(i = 1) s = p ; q = p ; else q-next = p ; q = q-n
3、ext ; void EmpInsert() employee *p ,*q = s; while(q-next!=NULL) q = q-next ; p = (employee *)malloc(SIZE) ; printf(please enter namen); scanf_s(%s,&p-name,20); printf(please enter numbern); scanf_s(%d,&p-number); printf(please enter postn); scanf_s(%s,&p-post,20); q-next = p ; p-next = NULL ; n+ ;vo
4、id EmpDelete(int num) employee *p=s,*q=s; int i=0,j = 0; while(jnumber; if(i=num) if(p=s) s = s-next; else q-next = p-next; n-; return ; else q = p; p = p-next; j+; printf(number not foundn) ;void EmpPrint() employee *p = s; printf(the list of employeesn) ; while(p !=NULL) printf(%st%dt%sn,p-name,p-
5、number,p-post) ; p = p-next ; int _tmain(int argc, _TCHAR* argv) int l ,m; printf(create list,please enter the number of the employeen); scanf_s(%d,&n) ; InitComp() ; EmpPrint() ; while(1) printf(enter number to choose action:1 for indert ,2 for deleten) ; scanf_s(%d,&l) ; switch(l) case 1: EmpInser
6、t() ; EmpPrint() ; break ; case 2: printf(please enter the number of the employee you deleten) ; scanf_s(%d,&m) ; EmpDelete(m) ; EmpPrint() ; break ; default: EmpPrint() ; system(pause); return 0;2、约瑟夫(Josephus)环问题:编号为1,2,3,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时
7、停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。#include stdafx.h#include stdio.h#include stdlib.hstruct person int num ; int code ; person *next ; ;person *h ;void CreaCircle() int n ,i ; person *p , *q = NULL, *r = NULL; printf(please enterthr nember
8、of people:n); scanf_s(%d,&n) ; for(i = 1; i num = i ; printf(please enter the code of the %d person:n,i); scanf_s(%d,&p-code) ; p-next = NULL ; if(i =1) h = p ; q = p ; q-next = p ; q = p ; q-next = h ;void RunGame() int m , i; person * r , * t = h; printf(please enter the first code :n) ; scanf_s(%
9、d,&m) ; while(t-next != t) for(i = 1; i next ; r = t-next ; m = r-code ; t-next = r-next ; printf(the %d person is kickedn,r-num); int main() CreaCircle() ; RunGame() ; system(pause); return 0 ;栈和队列3、某商场有一个100个车位的停车场,当车位未满时,等待的车辆可以进入并计时;当车位已满时,必须有车辆离开,等待的车辆才能进入;当车辆离开时计算停留的的时间,并且按照每小时1元收费。汽车的输入信息格式可以
10、是(进入/离开,车牌号,进入/离开时间),要求可以随时显示停车场内的车辆信息以及收费历史记录。#include #include time.h#include stdlib.h#include #include stdio.husing namespace std;#define LIST_INIT_SIZE 10#define PRICE 1typedef struct Car int carnumber; int money; time_t entertime; time_t leavetime;Car;typedef struct ParkList Car *head; int leng
11、th; int listsize;ParkList;typedef struct WaitNode Car WaitCar; WaitNode *next;WaitNode,*WaitList;typedef struct LeaveNode Car LeaveCar; LeaveNode *next;LeaveNode,*LeaveList;int init_LeaveList(LeaveList &L) L = (LeaveList)malloc(sizeof(LeaveNode); L-next = NULL;int init_WaitList(WaitList &WL,Car wc)
12、WL = (WaitList)malloc(sizeof(WaitNode); WL-WaitCar = wc; WL-next = NULL;void Put_LeaveList(LeaveList &L,Car lc) LeaveList p = L; if(p=NULL) return ; while(p-next) p = p-next; LeaveList q = (LeaveList)malloc(sizeof(LeaveNode); q-LeaveCar = lc; p-next = q; q-next = NULL; q-LeaveCar.money = (q-LeaveCar
13、.leavetime-q-LeaveCar.entertime)*PRICE;void Putelem_WaitList(WaitList &WL,Car wc) WaitList p = WL; if(p=NULL) init_WaitList(WL,wc); return ; while(p-next) p = p-next; WaitList q = (WaitList)malloc(sizeof(WaitNode); q-WaitCar = wc; p-next = q; q-next = NULL;void delete_WaitList(WaitList &WL,Car &c) i
14、f(WL=NULL) return ; WaitList p = WL; c = p-WaitCar; if(WL-next=NULL) WL=NULL; else WL = WL-next; free(p);Car CreateCar(int carnum) Car *pc = (Car *)malloc(sizeof(Car); pc-carnumber = carnum; pc-entertime = time(NULL); return *pc; int init_Parklist(ParkList &p) p.head = (Car *)malloc(LIST_INIT_SIZE*s
15、izeof(Car); if(!p.head) return 0; p.length = 0; p.listsize = LIST_INIT_SIZE; return 1; int put_ParkList(ParkList &p,WaitList &WL,Car c) if(p.length=p.listsize) if(WL=NULL) init_WaitList(WL,c); else Putelem_WaitList(WL,c); return 0; Car *pc = p.head; pcp.length = c; p.length += 1; return 1; int inser
16、t_ParkList(ParkList &p,WaitList &WL,int i) Car c; delete_WaitList(WL,c); if(i=p.length) return 0; Car *pc = p.head; for(int j=p.length-1;ji-1;j-) pcj+1=pcj; pci=c; p.length += 1; return 1; int delete_ParkList(ParkList &p,LeaveList &L,int i) if(i=0&ip.length) Car *pc = p.head; pci.leavetime = time(NU
17、LL); Put_LeaveList(L,pci); for(int j=i;jp.length-1;j+) pcj=pcj+1; p.length -= 1; return 1; else return 0; void showParkList(ParkList p) if(p.head!=NULL) Car *pc = p.head; printf(ParkList:n); for(int j=0;jWaitCar.carnumber,ctime(&(p-WaitCar.entertime); p = p-next; void showLeaveList(LeaveList L) Leav
18、eList p = L-next; printf(LeaveList:n); while(p) printf(%d %sn,p-LeaveCar.carnumber, ctime(&(p-LeaveCar.entertime); printf(%s %dn,ctime(&(p-LeaveCar.leavetime),p-LeaveCar.money); p = p-next; int main() ParkList p; LeaveList L; WaitList WL=NULL; init_LeaveList(L); init_Parklist(p); srand(time(NULL); C
19、ar c; int i = 1,n=0; int dic = 0; int index = 0; int time = 0; while(inum = number ; CL-next = NULL ;void PutCL(CostList & CL , int number) CostList p = CL , q; if(CL = NULL) InitCL(CL , number) ; else while(p-next) p = p-next ; q= (CostList)malloc(sizeof(Cost) ; q-num = number ; p-next = q; q-next
20、= NULL ; void PopCL(CostList & CL , int & number) CostList p = CL ; if(CL = NULL) number = 0 ; else number = CL-num ; CL = CL-next ; free( p ) ; void ShowCL(CostList & CL) CostList p = CL ; while(p) printf(%d ,p-num ) ; p = p-next ; printf(n) ;int _tmain(int argc, _TCHAR* argv) int a6 = 0, n , costn
21、um=0 , i = 0 , j = 0 , m; CostList CL1 = NULL ,CL2 = NULL , CL3 = NULL ; while(1) printf(请选择业务种类n1.公积金业务n2.银行卡业务n3.理财卡业务n4.业务办理完成n5.显示当前窗口营业状态n6.显示当前排队情况n) ; scanf_s(%d,&n) ; switch(n) case 1 : i+ ; printf(您的序号为:%dn,i) ; if(CL1 = NULL) InitCL(CL1 , i) ; else PutCL(CL1 , i) ; break ; case 2 : i+ ; pr
22、intf(您的序号为:%dn,i) ; if(CL2 = NULL) InitCL(CL2 , i) ; else PutCL(CL2 , i) ; break ; case 3 : i+ ; printf(您的序号为:%dn,i) ; if(CL3 = NULL) InitCL(CL3 , i) ; else PutCL(CL3 , i) ; break ; case 4 : printf(正在营业的窗口:n) ; for(j = 0 ; j 6 ; j+) if(aj != 0) printf(%d ,j+1) ; printf(n); printf(请选择业务办理完成的窗口号:n) ;
23、scanf_s(%d,&m) ; am-1 = 0; break ; case 5 : printf(窗口营业情况:n) ; for(j = 0 ; j 6 ; j+) if(aj != 0) printf(%d号窗口正在为%d号客户服务n,j+1 ,aj) ; break ; case 6 : printf(办理公积金业务的客户有:n) ; ShowCL(CL1) ; printf(办理银行卡业务的客户有:n) ; ShowCL(CL2) ; printf(办理理财卡业务的客户有:n) ; ShowCL(CL3) ; if(a0 = 0) PopCL(CL1 ,costnum) ; a0 = costnum ; if(a4 = 0) PopCL(CL3 , costnum) ; a4 = costnum ; if(a5 = 0) PopCL(CL3 , costnum) ; a5 = costnum ; if(a1 = 0) if(CL2 != NULL)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1