"数据结构第三周:线性表的链式存储结构与实现"

需积分: 9 3 下载量 185 浏览量 更新于2024-01-05 收藏 2.07MB PDF 举报
) { L = (LinkList)malloc(sizeof(LNode)); // 分配存储空间 if (!L) { // 空间不足,分配失败 exit(OVERFLOW); } L->next = NULL; // 头结点指针为空 return OK; // 初始化成功 } 8.2 单链表的插入操作 Status ListInsert_L(LinkList &L, int i, ElemType e) { LNode *p, *s; p = GetElemP_L(L, i - 1); // 查找第i-1个元素的位置 if (!p) { // 位置i-1不存在 return ERROR; } s = (LNode *)malloc(sizeof(LNode)); // 申请新结点空间 if (!s) { // 空间不足 exit(OVERFLOW); } s->data = e; // 将元素e赋值给新结点 s->next = p->next; // 将p的后继结点赋值给新结点的后继 p->next = s; // 将新结点赋值给p的后继 return OK; } 8.3 单链表的删除操作 Status ListDelete_L(LinkList &L, int i, ElemType &e) { LNode *p, *q; p = GetElemP_L(L, i - 1); // 查找第i-1个元素的位置 if (!p || !p->next) { // 位置i或i+1不存在 return ERROR; } q = p->next; // 要删除的结点 p->next = q->next; // 将q的后继赋值给p的后继 e = q->data; // 将删除的结点元素赋值给e free(q); // 释放删除结点的空间 return OK; } 8.4 单链表的查找操作 LNode *GetElemP_L(LinkList L, int i) { LNode *p; int j; if (i < 0) { // i无效 return NULL; } p = L; // p指向头指针结点 j = 0; while (p->next && j < i) { // p不为空且计数器j还没有等于i p = p->next; // 指针p指向下一个 j++; } if (j == i) { // 找到位置i return p; } else { // i值不合法 return NULL; } } 9.单链表的应用--静态链表 10.静态链表 11.静态链表及应用实例--约瑟夫问题12. 实现、应用、总结 【数据结构】第三周 线性表的链式表示和实现.pdf 描述:该资源为个人观看青岛大学王卓老师数据结构课程的课堂笔记,主要内容包括线性表的链式表示例子以及与链式存储相关的术语和知识点。通过讲解链式存储结构和各种链表的特点、区别,以及单链表的基本操作和应用,使学生掌握数据结构中线性表的链式表示和实现方法,帮助学生更好地理解和运用数据结构知识。 该资源详细介绍了单链表的结构、特点、存储结构和基本操作的实现方法,包括单链表的初始化、插入、删除、查找等操作,以及单链表静态链表的应用实例,通过实例演示帮助学生更好地理解和掌握知识点。最后,资源总结实现、应用、总结了单链表的操作方法及其应用,为学生提供了一个全面的学习参考资料。