数据结构与算法——单链表的基本操作

下面的代码中包括获取某一结点的数据和增删操作

#include<stdio.h>
#include<stdlib.h>
typedef int status;
typedef int ElemType;
#define ERROR 0;
#define OK 1;
typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;
typedef struct Node *LinkList;

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

status ListInsert(LinkList * L, int i ,ElemType e )
{
    int j ; 
    LinkList p,s;
    p=*L;
    j=1;
    while(p&&j<i)
    {
        p=p->next;
        ++j;

    }
    if(!p||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&&j<i)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i)
    {
        return ERROR;
    }
    q=p->next;
    p->next =q->next;
    *e = q->data;
    free(q);
    return OK;

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容