线性表
1、 某软件公司大约有30名员工,每名员工有姓名、工号、职务等属性,每年都有员工离
职和入职。
把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。
#include \ #include \ #include \ #include \
#define SIZE sizeof(employee)
typedef struct employee { int n ; employee *s ;
void InitComp() {
printf(\) ; int i = 0 ;
employee *p , *q =NULL ; while(i < n) {
p = (employee *)malloc(SIZE) ; printf(\); scanf_s(\,&(p->name),20); printf(\); scanf_s(\,&(p->number)); printf(\); scanf_s(\,&(p->post),20); p->next = NULL ; i++ ; if(i == 1) { }
s = p ; q = p ;
char name[20] ; int number ; char post[20] ; employee *next ;
}employee ;
}
}
else{ }
q->next = p ; q = q->next ;
void EmpInsert() { }
void EmpDelete(int num) {
employee *p=s,*q=s; int i=0,j = 0; while(j i=p->number; if(i==num){ } else { q = p; p = p->next; j++; if(p==s){ } else{ } n--; return ; q->next = p->next; s = s->next; employee *p ,*q = s; while(q->next!=NULL) q = q->next ; p = (employee *)malloc(SIZE) ; printf(\); scanf_s(\,&p->name,20); printf(\); scanf_s(\,&p->number); printf(\); scanf_s(\,&p->post,20); q->next = p ; p->next = NULL ; n++ ; } } } printf(\) ; void EmpPrint() { } int _tmain(int argc, _TCHAR* argv[]) { while(1) { printf(\) ; scanf_s(\,&l) ; switch(l) { case 1: } EmpInsert() ; EmpPrint() ; break ; printf(\) ; scanf_s(\,&m) ; EmpDelete(m) ; EmpPrint() ; break ; EmpPrint() ; int l ,m; printf(\); scanf_s(\,&n) ; InitComp() ; EmpPrint() ; employee *p = s; printf(\) ; while(p !=NULL) { } printf(\,p->name,p->number,p->post) ; p = p->next ; case 2: default: } system(\); return 0; } 2、 约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每 人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。 建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。 #include \ #include \ #include \ struct person { } ; person *h ; void CreaCircle() { int n ,i ; person *p , *q = NULL, *r = NULL; printf(\); scanf_s(\,&n) ; for(i = 1; i < n+1; i++) { } p = (person *) malloc(sizeof(person)) ; p->num = i ; printf(\,i); scanf_s(\,&p->code) ; p->next = NULL ; if(i ==1) { } q->next = p ; q = p ; h = p ; q = p ; int num ; int code ; person *next ; } q->next = h ; void RunGame() { } int main(){ CreaCircle() ; RunGame() ; system(\); return 0 ; } int m , i; person * r , * t = h; printf(\) ; scanf_s(\,&m) ; while(t->next != t) { } for(i = 1; i < m - 1; i++) t = t->next ; r = t->next ; m = r->code ; t->next = r->next ; printf(\,r->num); 栈和队列 3、 某商场有一个100个车位的停车场,当车位未满时,等待的车辆可以进入并计时;当车 位已满时,必须有车辆离开,等待的车辆才能进入;当车辆离开时计算停留的的时间,并且按照每小时1元收费。 汽车的输入信息格式可以是(进入/离开,车牌号,进入/离开时间),要求可以随时显示停车场内的车辆信息以及收费历史记录。 #include #define LIST_INIT_SIZE 10 #define PRICE 1 typedef struct Car