嵌入式day5

今日学习任务

根据给定的要求,完成单链表数据结构,实现各函数的功能,并编写测试代码进行测试。

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int ElemType;/* ElemType类型根据实际情况而定,这里假设为int */

typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;
typedef struct Node * LinkList; /* 定义LinkList */

/* 初始化顺序线性表 */
Status InitList(LinkList *L) 


/* 初始条件:顺序线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE */
Status ListEmpty(LinkList L)


/* 初始条件:顺序线性表L已存在。操作结果:将L重置为空表 */
Status ClearList(LinkList *L)


/* 初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数 */
int ListLength(LinkList L)


/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)*/
/* 操作结果:用e返回L中第i个数据元素的值 */
Status GetElem(LinkList L,int i,ElemType *e)


/* 初始条件:顺序线性表L已存在 */
/* 操作结果:返回L中第1个与e满足关系的数据元素的位序。 */
/* 若这样的数据元素不存在,则返回值为0 */
int LocateElem(LinkList L,ElemType e)


/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1, */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */
Status ListInsert(LinkList *L,int i,ElemType e)


/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) */
/* 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 */
Status ListDelete(LinkList *L,int i,ElemType *e) 


/* 初始条件:顺序线性表L已存在 */
/* 操作结果:依次对L的每个数据元素输出 */
Status ListTraverse(LinkList L)

/*  随机产生n个元素的值,建立带表头结点的单链线性表L(头插法) */
void CreateListHead(LinkList *L, int n) 


/*  随机产生n个元素的值,建立带表头结点的单链线性表L(尾插法) */
void CreateListTail(LinkList *L, int n) 
 

       复习指针,学习链表。

今日任务完成情况

 

#include "stdio.h"    
#include "string.h"
#include "ctype.h"      
#include "stdlib.h"   
#include "math.h"  
#include <time.h>
#include <sys/time.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20 

typedef int Status;
typedef int ElemType;
Status visit(ElemType c)
{
    printf("%d ",c);
    return OK;
}

typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;
typedef struct Node * LinkList; 


Status InitList(LinkList *L) 

    *L=(LinkList)malloc(sizeof(Node));
    if(!(*L))
            return ERROR;
    (*L)->next=NULL; 

    return OK;
}


Status ListEmpty(LinkList L)

    if(L->next!=NULL)
            return FALSE;
    else
            return TRUE;
}

Status ClearList(LinkList *L)

    LinkList p,q;
    p=(*L)->next;          
    while(p)                
    {
        q=p->next;
        free(p);
        p=q;
    }
    (*L)->next=NULL;       
    return OK;
}


int ListLength(LinkList L)
{
    int i=0;
    LinkList p=L->next; 
    while(p!=NULL)                        
    {
        i++;
        p=p->next;
    }
    return i;
}


Status GetElem(LinkList L,int i,ElemType *e)
{
    int j;
    LinkList p;    
    p = L->next;     
    j = 1;    
    
    while (p!=NULL && j<i)  
    {   
        p = p->next;  
        ++j;
    }
    
    if ( p==NULL || j>i ) 
        return ERROR; 
    *e = p->data;   
    return OK;
}


int LocateElem(LinkList L,ElemType e)
{
    int i=0;
    LinkList p=L->next;
    while(p!=NULL)
    {
        i++;
        if(p->data==e)
                return i;
        p=p->next;
    }

    return 0;
}

Status ListInsert(LinkList *L,int i,ElemType e)

    int j;
    LinkList p,s;
    p = *L;   
    j = 1;
    
    while (p!=NULL && j < i)    
    {
        p = p->next;
        ++j;
    } 
    
    
    if (p==NULL || j > i) 
        return ERROR; 
        
    s = (LinkList)malloc(sizeof(Node));  
    
    
    s->data = e; 
    
     
    s->next = p->next;     
    p->next = s;        
    
    
    return OK;
}

Status ListDelete(LinkList *L,int i,ElemType *e) 

    int j;
    LinkList p,q;
    p = *L;
    j = 1;
    
    while (p->next!=NULL && j < i)    
    {
        p = p->next;
        ++j;
    }
    
    if ((p->next)==NULL || j > i) 
        return ERROR;         
    
    q = p->next;
    p->next = q->next;        
    
    *e = q->data;            
    
    
    return OK;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值