当前位置: 首页 > news >正文

CH2 线性表

2.2 线性表的顺序实现

假定线性表的元素类型为ElemType

静态分配的顺序表存储结构

#define MaxSize 50
typedef struct{ElemType data[MaxSize];int length;
}SqList;

动态分配的顺序表存储结构

#define InitSize 100
typedef struct{ElemType *data;int MaxSize,length;
}SeqList;

顺序表的插入操作

bool ListInsert(SqList &L,int i,ElemType e){if(i<1||i>L.length+1)return false;if(L.length>=MaxSize)return false;for(int j=L.length;j>=i;j--)L.data[j]=L.data[j-1];L.data[i-1]=e;L.length++;return true;
}

顺序表的删除操作

bool ListDelete(SqList &L,int i,ElemType &e){if(i<1||i>L.length)return false;e=L.data[i-1];for(int j=i;j<L.length;j++)L.data[j-1]=L.data[j];L.length--;return true;
}

顺序表按值查找

int LocateElem(SqList L,ElemType e){int i;for(i=0;i<L.length;i++)if(L.data[i]==e)return i+1;return 0;
}

2.3 线性表的链式表示

2.3.1 单链表

单链表的节点类型

typedef struct LNode{ElemType data;struct LNode *next;
}LNode, *LinkList;

插入节点操作

bool ListInsert(LinkList &L,int i,ElemType e){LNode *p=L;int j=0;while(p!=NULL&&j<i-1){p=p->next;j++;}if(p==NULL)return false;LNode *s=(LNode*)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;return true;
}

删除节点操作

bool ListDelete(LinkList &L,int i,ElemType &e){LNode *p=L;int j=0;while(p->next!=NULL&&j<i-1){p=p->next;j++;}if(p->next==NULL||j>i-1)return false;LNode *q=p->next;e=q->data;p->next=q->next;free(q);return true;
}

采用头插法建立单链表

LinkList List_HeadInsert(LinkList &L){LNode *s; int x;L=(LNode*)malloc(sizeof(LNode));L->next=NULL;scanf("%d",&x);while(x!=9999){s=(LNode*)malloc(sizeof(LNode));s->data=x;s->next=L->next;L->next=s;scanf("%d",&x);}return L;
}

采用尾插法建立单链表

LinkList List_TailInsert(LinkList &L){int x;L=(LNode*)malloc(sizeof(LNode));LNode *s,*r=L;scanf("%d",&x);while(x!=9999){s=(LNode*)malloc(sizeof(LNode));s->data=x;r->next=s;r=s;scanf("%d",&x);}r->next=NULL;return L;
}

2.3.2 双链表

双链表的节点类型

typedef struct DNode{ElemType data;struct DNode *prior,*next;
}DNode, *DLinkList;

2.3.3 静态链表

静态链表的结构类型

#define MaxSize 50
typedef struct{ElemType data;int next;
}SLinkList[MaxSize];

http://www.dtcms.com/a/347194.html

相关文章:

  • LeetCode 分类刷题:2529. 正整数和负整数的最大计数
  • IDEA控制台乱码(Tomcat)解决方法
  • 2-4.Python 编码基础 - 流程控制(判断语句、循环语句、break 语句与 continue 语句)
  • MySQL存储过程详解
  • `strlen` 字符串长度函数
  • GEO优化服务:智能时代的全球竞争新赛道
  • VS Code 中创建和开发 Spring Boot 项目
  • python企微发私信
  • Text2API与Text2SQL深度对比:自然语言驱动的数据交互革命
  • 【40页PPT】数据安全动态数据脱敏解决方案(附下载方式)
  • C/C++ 头文件命名约定
  • stack,queue以及deque的介绍
  • 【Java学习笔记】18.反射与注解的应用
  • [e3nn] 模型部署 | TorchScript JIT | `@compile_mode`装饰器 | Cython
  • TypeScript的构造函数constructor用法理解
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第四章知识点问答补充及重新排版
  • 离线优先与冲突解决:ABP vNext + PWA 的边缘同步
  • SQL Server更改日志模式:操作指南与最佳实践!
  • 使用 Certbot 申请 Apache 证书配置棘手问题
  • UAD详解
  • 分库分表系列-核心内容
  • 知识蒸馏 Knowledge Distillation 概率链式法则(Probability Chain Rule)
  • Class42时序模型
  • 深度学习开篇
  • 【通俗易懂】TypeScript 的类型守卫 (Type Guards)作用理解
  • iperf2 vs iperf3:UDP 发包逻辑差异与常见问题
  • [新启航]白光干涉仪与激光干涉仪的区别及应用解析
  • ubuntu 新登录修改root密码
  • 【攻防世界】Web_php_include
  • 力扣热题之动态规划