Skip to content
New issue

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

陈抒菡 #33

Open
notwiioe opened this issue Dec 2, 2018 · 1 comment
Open

陈抒菡 #33

notwiioe opened this issue Dec 2, 2018 · 1 comment
Labels
修改 代码出现问题,请修改后重新提交代码

Comments

@notwiioe
Copy link

notwiioe commented Dec 2, 2018

#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;
}
@wmpscc
Copy link
Member

wmpscc commented Dec 7, 2018

点评:

  • 1.第一个代码请修改(不符合要求)
  • 2.第二个代码请修改(重复输出,其中一条不符合要求)
  • 3.第三个代码请修改(编译未通过)

修改!

@wmpscc wmpscc added the 修改 代码出现问题,请修改后重新提交代码 label Dec 7, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
修改 代码出现问题,请修改后重新提交代码
Projects
None yet
Development

No branches or pull requests

2 participants