We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#include"stdio.h" #include"stdlib.h" typedef struct Matrix{ int i,j,a; struct Matrix *right,*down; }Mat,*Link; typedef struct{ Link *rhead,*chead; int m,n,t; }CrossList; void initialize(CrossList *M) { M->chead = NULL; M->rhead = NULL; M->m = M->n = M->t = 0; } void creat(CrossList *M) { int i,j,a; int k; Mat *p,*q; M->m = 1000; M->n = 1000; M->t = 1e6; FILE *fp = fopen("E://test//矩阵.txt","r"); M->rhead = (Link *)malloc(1001*sizeof(Link)); M->chead = (Link *)malloc(1001*sizeof(Link)); for(k = 1;k <= 1000;k ++) { M->rhead[k] = NULL; M->chead[k] = NULL; } while(fp) { fscanf(fp,"%d%d%d",&i,&j,&a); p = (Mat *)malloc(sizeof(Mat)); p->i = i; p->j = j; p->a = a; //修改行的指针域 if(M->rhead[i] == NULL || M->rhead[i]->j > j) { p->right = M->rhead[i]; M->rhead[i] = p; } else { for(q = M->rhead[i]; q->right && q->j < j;p = q->right); p->right = q->right; q->right = p; } if(M->chead[i] == NULL || M->chead[i]->j > j) { p->down = M->chead[i]; M->chead[i] = p; } else { for(q = M->chead[i]; q->down && q->j < j;p = q->down); p->down = q->down; q->down = p; } } fclose(fp); } void multiply(CrossList X,CrossList Y, CrossList *Q) { int i,j,a; int k; Link q,q0,p0,q1,q2;//新节点,n rhead,m chead,q rhead,q chead; initialize(Q); Q->m = 1000; Q->n = 1000; Q->t = 0; Q->rhead = (Link *)malloc(1001*sizeof(Link)); Q->chead = (Link *)malloc(1001*sizeof(Link)); for(k=1;k <= 1000; k++) { Q->chead[k] = NULL; Q->rhead[k] = NULL; } for(i=1;i <= 1000;i++) for(j=1;j <= 1000;j++) { p0 = X.rhead[i]; q0 = Y.chead[i]; a=0; while(p0 && q0) { if(p0->i == q0->j) { a += p0->a * q0->a; p0 = p0->right; q0 = q0->down; } else if(p0->i < q0 ->j) p0 = p0->right; else q0 = q0->down; } while(a) { (Q->t)++; q=(Link)malloc(sizeof(Mat)); q->i = i; q->j = j; q->a = a; q->right=NULL; q->down=NULL; if(!Q->rhead[i]) Q->rhead[i] = q1 = q; else while(q1->right) q1 = q1->right; q1->right = q; if(!Q->chead[j]) Q->chead[j] = q2 = q; else while(q2->down) q2 = q2->down; q2->down = q; } } } void save(CrossList D) { int k; Link p; FILE *fp = fopen("E://test//矩阵.txt","a+"); for(k=1;k<=1000;k++) { p = D.rhead[k]; printf("%d行%d列值为%d\n",p->i,p->j,p->a); fprintf(fp,"%d\t%d\t%d\n",p->i,p->j,p->a); p=p->right; } fclose(fp); } int main() { CrossList A,B,C; initialize(&A); initialize(&B); creat(&A); creat(&B); multiply(A,B,&C); save(C); return 0; } #include"stdio.h" #include"stdlib.h" struct node{ int data; struct node *next; }*p,*n,*s,*head,*current; void creat() { head = NULL; int x; scanf("%d",&x); while(x != -1) { current = (struct node*)malloc(sizeof(struct node)); current->data = x; current->next = head; head = current; scanf("%d",&x); } } void print() { while(current != NULL) { printf("%d ",current->data); current = current->next; } } void reverse() { p = NULL; while(head != NULL) { n = head->next; head->next = p; p = head; head = n; } } void print_reverse() { s = p; while(s != NULL) { printf("%d ",s->data); s = s->next; } } int main() { creat(); print(); reverse(); printf("\n"); print_reverse(); return 0; } #include"stdio.h" #include"stdlib.h" # include"string.h" #include"windows.h" typedef struct Student{ char name[20]; int id; int age; int gender; //0male1female int dorm; int bed; struct Student *next; }Stu; int n,in,del,stu_id; Stu *head,*p,*r,*c,*new,*ne; int sw; void input() { if(n <= 0) return NULL; else { for(int i = 0;i < n;i ++) { int n,a,g,d,b; printf("Please input student information:\n name:\n id:\n age:\n gender:\n dorm:\n bed:\n"); c = (Stu *)malloc(sizeof(Stu)); scanf("%s%d%d%d%d%d",&c->name,&c->id,&c->age,&c->gender,&c->dorm,&c->bed); c->next = NULL; if(i == 0) { head = c; r = c; } else { r->next = c; r = c; } } } } //输出 void output() { p = head; if(head == NULL) { printf("No student information\n"); exit(0); } else { printf("student information:\n"); while(p != NULL) { printf(" name:%s\n id:%d\n age:%d\n gender:%c\n dorm:%d\n bed:%d\n",p->name,p->id,p->age,p->gender,p->dorm,p->bed); p = p->next; } } } //查询 void query() { system("cls"); p = head; if(p = NULL) { printf("No student information\n"); exit(0); } else { printf("please enter student id:\n"); scanf("%d",stu_id); while(p->id != stu_id) { p = p->next; } printf("%s\n %d\n %d\n %c\n %d\n %d\n",p->name,p->id,p->age,p->gender,p->dorm,p->bed); } } //插入 void insert() { p = head; new = (Stu *)malloc(sizeof(Stu)); printf("Please input the new student information:\n name:\n id:\n age:\n gender:\n dorm:\n bed:\n"); scanf("%s%d%d%d%d%d",&c->name,&c->id,&c->age,&c->gender,&c->dorm,&c->bed); printf("Please enter the location you want to insert:"); scanf("%d",&in); if(in == 1) { new ->next = p; head = new; } else { for(int j = 1;j < in - 1 && p;j ++) p = p->next; new->next = p->next; p->next = new; } } //删除 void delete() { printf("Please enter the location you want to delete:"); scanf("%d",&del); p = head; if(del == 1) { ne = p; head = p->next; free(ne); } else { for(int j = 1;j < del -1 && p;j ++) p = p->next; ne = p->next; p->next = ne->next; free(ne); } } //存储 void read_and_write() { p = head; FILE *fp; fp=fopen("数据.txt","a+"); if(fp == NULL) { while(p != NULL) { fprintf("name:%s\n id:%d\n age:%d\n gender:%c\n dorm:%d\n bed:%d\n",p->name,p->id,p->age,p->gender,p->dorm,p->bed); p = p->next; } fflush(fp); fclose(fp); } else { printf("student information:\n name:%d\n id:%d\n age:%d\n gender:%d\n dorm:%d\n bed:%d\n"); char name[20]; int id; int age; int gender; int dorm; int bed; fp=fopen("数据.txt","r+"); while(fscanf("student information:\n name:%d\n id:%d\n age:%d\n gender:%d\n dorm:%d\n bed:%d\n",&name,&id,&age,&gender,&dorm,&bed)) { printf(" name:%s\n id:%d\n age:%d\n gender:%c\n dorm:%d\n bed:%d\n",name,id,age,gender,dorm,bed); } } } int main() { while(1) { printf("1添加2显示3查询4插入5删除6存储7退出"); scanf("%d",&sw); if(sw != 0) switch(sw) { case 1: system("cls"); printf("please enter the number you want\n"); scanf("%d",&n); if(n <= 0) { printf("please enter right number"); Sleep(600); break; } else { input(); break; } case 2: system("cls"); output(); system("pause"); break; case 3: system("cls"); query(); break; case 4: system("cls"); insert(); break; case 5: system("cls"); delete(); break; case 6: system("cls"); read_and_write(); break; case 7: system("cls"); printf("seeya\n\n"); exit(0); } } return 0; }
The text was updated successfully, but these errors were encountered:
点评:
修改!
Sorry, something went wrong.
No branches or pull requests
The text was updated successfully, but these errors were encountered: