前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单链表的基本操作

单链表的基本操作

作者头像
李志伟
发布2022-05-10 21:42:14
2910
发布2022-05-10 21:42:14
举报
文章被收录于专栏:为学为学

单链表的基本操作

首先预定义链表结构和结点

代码语言:javascript
复制
typedef struct Node{
    ElemType data;
    struct Node *next;
}Node;

typedef struct Node *LinkList;      /*定义LinkList*/

接下来贴几个基本操作

代码语言:javascript
复制
/*初始条件:顺序线性表L 不存在*/
/*操作结果:建立一个头结点*/
Node *LinkListInit(){
    Node *p;
    p = (Node *)malloc(sizeof(Node));   /*建立一个大小与Node结点大小相同的结点*/

    if(!p){
        printf("分配空间失败!");
    }

    p->next = NULL;
    return p;
}

/*初始条件:顺序链表L 已存在*/
/*操作结果:在链表L 中填入元素*/
Node *LinkListCreat(){
    Node *q, *p, *L;

    p = (Node *)malloc(sizeof(Node));
    L = (Node *)malloc(sizeof(Node));       //建立一个头结点

    //开始建立新的链表的后续项目
    q = (Node *)malloc(sizeof(Node));
    printf("请输入该链表的元素(0表示结束):");
    scanf("%d", &q->data);
    int m = q->data;
    while(m != 0){          // 判断输入是否为0
        p->next = q;
        p = q;
        q = (Node *)malloc(sizeof(Node)); 
        printf("请输入该链表的元素(0表示结束):");
        scanf("%d", &m);
        q->data = m;
    }
}

/*初始条件:顺序线性表L 已存在,1 <= i <= ListLength(L)*/
/*操作结果:用e 返回L 中第i 个数据元素的值*/
Status GetElem(LinkList L, int i, ElemType *e){
    int j;
    LinkList p;         /*声明一指针p*/
    p = L->next;        /*让p 指向链表L的第一个结点*/
    j = 1;              /*j 为计数器*/

    while(p && j < i){  /*p 不为空 且计数器j还没有等于i 时,循环继续*/
        p = p->next;    /*让p 指向下一个结点*/
        j++;
    }

    if(!p || j > i){    /*当第i 个结点不存在时*/
        return ERROR;
    }

    * e = p->data;      /*取第i 个结点的数据*/
    return Ok;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单链表的基本操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档