美文网首页
电商专业学习嵌入式软件开发第三十九天

电商专业学习嵌入式软件开发第三十九天

作者: 雨打梨花闭门寒 | 来源:发表于2017-03-10 16:55 被阅读0次
    • C第十三天

    老师今天讲的内容比较少,只有双向循环链表和makefile的使用方法,老师先给我们解决了昨天留的作业,然后才讲新内容。作业里的代码和题目有点出入,但是更改代码位置也能表达出作业里面的意思。老师说下周一要进行阶段考试,成绩不合格的要留到下一个班重学,下周还要做阶段性的项目,还要针对项目进行答辩,看了一下项目,感觉难度好大,要求好多,但是也能检验这一段时间的学习成果,想到这儿不禁要为自己捏把汗。

    homework:新建一条链表,把链表里的数据读到文件中,然后把文件中的数据读到另一条链表中

    #include<stdio.h>
    #include<stdlib.h>
    //建立数据结构体
    typedef struct stu
    {
        char name[20];
        int id;
        int age;
    }DATA,*PDATA;
    //建立节点结构体
    typedef struct node
    {
        DATA data;
        struct node *next;
    }NODE,*PNODE;
    DATA getData()
    {
        DATA tmp;
        printf("输入姓名:");
        gets(tmp.name);
        printf("请输入学号:");
        scanf("%d",&tmp.id);getchar();
        printf("请输入年龄:");
        scanf("%d",&tmp.age);getchar();
        return tmp;
    }
    void disPlay(PNODE head)
    {
        PNODE p = head->next;
        while(p != NULL)
        {
            printf("姓名:%s 学号:%d 年龄:%d\n",p->data.name,p->data.id,p->data.age);
            p = p->next;
        }
    }
    PNODE createNode(DATA data)
    {
        PNODE tmp = (PNODE)malloc(sizeof(NODE));
        tmp->data = data;
        tmp->next = NULL;
        return tmp;
    }
    void insertNode(PNODE head,DATA data)
    {
        PNODE tmp = createNode(data);
        tmp->next = head->next;
        head->next = tmp;
    }
    //读取文件数据
    void loadData(PNODE head)
    {
        DATA data;
        FILE *fp = fopen("student.txt","r+");
        if(NULL == fp)
        {
            printf("文件读取失败!\n");
            exit(0);
        }
        while(fread(&data,sizeof(DATA),1,fp) == 1)
        {
            insertNode(head,data);
        }
        fclose(fp);
    }
    void saveData(PNODE head)
    {
        FILE *fp = fopen("student.txt","w+");
        PNODE p = head->next;
        while(p != NULL)
        {
            fwrite(&p->data,sizeof(DATA),1,fp);
            p = p->next;
        }
        fclose(fp);
    }
    int main()
    {
        PNODE head = (PNODE)malloc(sizeof(NODE));
        head->next = NULL;
        loadData(head);
        insertNode(head,getData());
        saveData(head);
        disPlay(head);
    }
    

    makefile:主要针对多个文件的使用,做项目要用到的内容。


    makefile的使用方法.png

    双向循环链表

    #include <stdio.h>
    #include <stdlib.h>
    struct node 
    {
        int data;
        struct node *prior;
        struct node *next;
    };
    void Add(struct node *a,struct node *new,struct node *b)
    {
        a->next=new;
        new->next=b;
        b->prior=new;
        new->prior=a;
    }
    //头插
    void T_insert(struct node *head)
    {
        struct node *new=(struct node *)malloc(sizeof(struct node));
        printf("请输入数据(头插):");
        scanf("%d",&new->data);
        Add(head,new,head->next);
    }
    //尾插
    void W_insert(struct node *head)
    {
        struct node *new=(struct node *)malloc(sizeof(struct node));
        printf("请输入数据(尾插):");
        scanf("%d",&new->data);
        Add(head->prior,new,head);
    }
    //打印
    void Print(struct node *head)
    {
        struct node *p=head->next;
        while(p!=head)
        {
            printf("%d\n",p->data);
            p=p->next;
        }
    }
    //创建一条双向循环链表
    struct node *Create()
    {
        struct node *head=(struct node *)malloc(sizeof(struct node));
        head->prior=head;
        head->next=head;
        return head;
    }
    //删除,按值
    void Delete(struct node *head,int data)
    {
        struct node *p=head->next;
        for(;p!=head;p=p->next)
            if(p->data==data)
            {
                p->prior->next=p->next;
                p->next->prior=p->prior;
                free(p);
            }
    }
    void main()
    {
        struct node *head=Create();
        T_insert(head);
        T_insert(head);
        T_insert(head);
        W_insert(head);
        Print(head);
        printf("请输入要删除的值:");
        int data;
        scanf("%d",&data);
        Delete(head,data);
        Print(head);
    }
    

    相关文章

      网友评论

          本文标题:电商专业学习嵌入式软件开发第三十九天

          本文链接:https://www.haomeiwen.com/subject/vkcogttx.html