标题:[原创] mp3播放器(Lrc歌词同步)源程序代码分析
只看楼主
hyq加油加油
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-10-26
结帖率:0
 问题点数:0 回复次数:1 
[原创] mp3播放器(Lrc歌词同步)源程序代码分析
#include <stdio.h>                            /*该文件包含pringtf()等函数*/
#include <stdlib.h>                            /*该文件包含exit()等函数*/
#include <malloc.h>                            /*该文件包含malloc()等函数*/

typedef int DataType;                        /*定义DataType为int*/


typedef struct Node
{
    DataType data;
    struct Node *next;
} SLNode;

void ListInitiate(SLNode **head)                        /*初始化*/
{
    /*如果有内存空间,申请头结点空间并使头指针head指向头结点*/
    if((*head = (SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1);
    (*head)->next = NULL;                        /*置链尾标记NULL */
}

int ListLength(SLNode *head)
{
    SLNode *p = head;                                /*p指向首元结点*/
    int size = 0;                                    /*size初始为0*/

    while(p->next != NULL)                        /*循环计数*/
    {
        p = p->next;
        size ++;
    }
    return size;
}

int ListInsert(SLNode *head, int i, DataType x)
/*在带头结点的单链表head的数据元素ai(0 ≤ i ≤ size)结点前*/
/*插入一个存放数据元素x的结点*/
{
    SLNode *p, *q;
    int j;

    p = head;                                 /*p指向首元结点*/
    j = -1;                                /*j初始为-1*/
    while(p->next != NULL && j < i - 1)
    /*最终让指针p指向数据元素ai-1结点*/
    {
        p = p->next;
        j++;
    }

    if(j != i - 1)
    {
        printf("插入位置参数错!");
        return 0;
    }

    /*生成新结点由指针q指示*/
    if((q = (SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1);
    q->data = x;

//此段程序有一处错误
    q->next=p->next ;                        /*给指针q->next赋值*/
    p->next = q;                            /*给指针p->next重新赋值*/
    return 1;
}

int ListDelete(SLNode *head, int i, DataType *x)
/*删除带头结点的单链表head的数据元素ai(0 ≤ i ≤ size - 1)结点*/
/*删除结点的数据元素域值由x带回。删除成功时返回1;失败返回0*/
{
    SLNode *p, *s;
    int j;

    p = head;                                 /*p指向首元结点*/
    j = -1;                                /*j初始为-1*/
    while(p->next != NULL && p->next->next!= NULL && j < i - 1)
    /*最终让指针p指向数据元素ai-1结点*/
    {
        p = p->next;
    j++;
    }

    if(j != i - 1)
    {
        printf("插入位置参数错!");
        return 0;
    }

//此段程序有一处错误
    s = p->next;                     /*指针s指向数据元素ai结点*/
    *x = s->data;                    /*把指针s所指结点的数据元素域值赋予x*/
    p->next = s->next;        /*把数据元素ai结点从单链表中删除指*/
    free(s);                        /*释放指针s所指结点的内存空间*/
    return 1;
}

int ListGet(SLNode *head, int i, DataType *x)
/*取数据元素ai和删除函数类同,只是不删除数据元素ai结点*/
{
    SLNode *p;
    int j;

    p = head;
    j = -1;
    while(p->next != NULL && j < i)
    {
        p = p->next;    j++;
    }

    if(j != i)
    {
        printf("取元素位置参数错!");
        return 0;
    }

//此段程序有一处错误
    x = p->next;
    return 1;
}

void Destroy(SLNode **head)
{
    SLNode *p, *p1;

    p = *head;
    while(p != NULL)
    {
        p1 = p;
        p = p->next;
        free(p1);
    }
    *head = NULL;
}



void main(void)
{
    SLNode *head;
    int i , x;

    ListInitiate(&head);                    /*初始化*/
    for(i = 0; i < 10; i++)
    {
        if(ListInsert(head, i, i+1) == 0)     /*插入10个数据元素*/
        {
            printf("错误! \n");
            return;
        }
    }
   
    if(ListDelete(head, 4, &x) == 0)     /*删除数据元素5*/
    {
        printf("错误! \n");
        return;
    }
   
    for(i = 0; i < ListLength(head); i++)
    {
        if(ListGet(head, i, &x) == 0)         /*取元素*/
        {
            printf("错误! \n");
            return;
        }
        else printf("%d    ", x);            /*显示数据元素*/
    }
   
    Destroy(&head);
}
 
搜索更多相关主题的帖子: mp3播放器 include 源程序 空间 
2015-11-30 22:07
hyq加油加油
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-10-26
得分:0 
求大神看看我这代码哪里出错了,谢谢!!!
2015-11-30 22:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459770-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.342533 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved