没有合适的资源?快使用搜索试试~ 我知道了~
3.整个链表的存取必须从头指针开始,头指针表示链表中第一个节点的存储位置。同时,由于最后一个数据元素没有直接后继,则线性链表中最后一个结点的指针为空(NULL)
资源详情
资源评论
资源推荐
Aug 28, 2018 | 学习笔记——C数据结构 | 4 阅读 | 1.6k 字 | 8 分钟
文章目录
1. SingleLinkedList(单链表)
2. SingleLinkedList.c文件
3. SingleLinkedList.h文件
4. testSingleLinkedList.c文件
5. 编译:
C封装单链表对象
SingleLinkedList(单链表)
github源码
特点:
1.用一组任意的存储单元存储数据元素,逻辑上相邻的两个数据元素其存储的物理位置不要求紧邻,由此,这种存储
结构为非顺序映像或链式映像。
2.存储节点包含两个域:其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域。
3.整个链表的存取必须从头指针开始,头指针表示链表中第一个节点的存储位置。同时,由于最后一个数据元素没有直接后继,则线性链表中最后一个结
点的指针为空(NULL)。
4.在单链表中,取得第i个元素必须从头指针出发寻找,因此单链表是非随机存取的存储结构。
5.在单链表中插入节点temp:
temp->next = p->next;
p->next = temp;
6.在单链表中删除节点temp:
Mr Bluyee's Blog
首页 归档 关于
temp = p->next;
p->next = temp->next;
free(temp);
7.在单链表中插入或删除一个节点时,仅需修改指针而不需要移动元素。
8.单链表获取、插入、删除元素的时间复杂度均为O(n),因为找到第i个结点都必须首先找到第i-1个结点,while循环环体中的语句频度与被查元素在表中位
置有关,若1<=i<=n,则频度为i-1,否则频度为n。
SingleLinkedList.c文件
#include <stdio.h>
#include <malloc.h>
#include "SingleLinkedList.h"
static void clear(SingleLinkedList *This);
static int isEmpty(SingleLinkedList *This);
static int length(SingleLinkedList *This);
static void print(SingleLinkedList *This);
static int indexElem(SingleLinkedList *This, ElemType* x);
static int getElem(SingleLinkedList *This, int index, ElemType *e);
static int modifyElem(SingleLinkedList *This, int index, ElemType* e);
static int deleteElem(SingleLinkedList *This, int index, ElemType* e);
static int appendElem(SingleLinkedList *This, ElemType *e);
static int insertElem(SingleLinkedList *This, int index, ElemType *e);
static int popElem(SingleLinkedList *This, ElemType* e);
SingleLinkedList *InitSingleLinkedList(){
SingleLinkedList *L = (SingleLinkedList *)malloc(sizeof(SingleLinkedList));
Node *p = (Node *)malloc(sizeof(Node));
L->This = p;
p->next = NULL;
L->clear = clear;
L->isEmpty = isEmpty;
L->length = length;
L->print = print;
L->indexElem = indexElem;
L->getElem = getElem;
L->modifyElem = modifyElem;
L->deleteElem = deleteElem;
L->deleteElem = deleteElem;
L->appendElem = appendElem;
L->insertElem = insertElem;
L->popElem = popElem;
return L;
}
void DestroySingleLinkedList(SingleLinkedList *L){
L->clear(L);
free(L->This);
free(L);
L = NULL;
}
static void clear(SingleLinkedList *This){
Node *p = This->This->next;
Node *temp = NULL;
while(p){
temp = p;
p = p->next;
free(temp);
}
p = This->This;
p->next = NULL;
}
static int isEmpty(SingleLinkedList *This){
Node *p = This->This;
if(p->next){
return 0;
}else{
return 1;
}
}
static int length(SingleLinkedList *This){
int j = 0;
Node *p = This->This->next;
while(p){
j++;
p = p->next;
}
return j;
}
剩余10页未读,继续阅读
三更寒天
- 粉丝: 80
- 资源: 326
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java的本科探索学习项目设计源码 - 本科探索
- 基于Javascript和Python的微商城项目设计源码 - MicroMall
- 基于Java的网上订餐系统设计源码 - online ordering system
- 基于Javascript的超级美眉网络资源管理应用模块设计源码
- 基于Typescript和PHP的编程知识储备库设计源码 - study-php
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0