首页 > 代码库 > 数据结构——动态链表
数据结构——动态链表
说明:严蔚敏的《数据结构》(C语言版)学习笔记,记录一下,以备后面查看。
#include <stdio.h> #include <malloc.h> const int OK = 1; //定义正确返回 const int ERROR = -1; //定义错误的返回 const int OVERFLOW = -2; //定义溢出 //定义元素类型 typedef int ElemType; //定义返回类型 typedef int Status; typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *LinkList; //获取第i个元素(L为带头结点的单链表的头指针) Status GetElem_L(LinkList L, int i, ElemType &e){ LinkList p = L->next; //L->next指向头结点 int j = 1; while(p&&j<i){ p = p->next; ++j; } if(!p || j>i) return ERROR; e = p->data; return OK; } //插入元素(第i个位置之前插入元素) Status ListInsert_L(LinkList L, int i, ElemType &e){ LinkList p = L; //头结点 int j = 0; while(p && j<i-1){ p = p->next; ++j; } if(!p || j>i-1) return ERROR; LinkList s = (LinkList)malloc(sizeof(LNode)); s->data = http://www.mamicode.com/e;>部分说明:1、第i个元素之前插入元素
如上图所示,假如现在有4个元素,那么有四个可选插入位置(①②③④):
让p先指向头结点,我们需要找到第i-1个结点,也就是需要插入位置的前一个结点,比如我们要插入到i=3,那么需要找到2位置,插入到③位置。
数据结构——动态链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。