单链表的表示和实现
来源:互联网 发布:淘宝拍a发b教程 编辑:程序博客网 时间:2024/05/22 10:19
线性表的链式表示和实现**线性链表的结点包含数据域和指针域两部分****头指针表示整个链表,链表名即头指针;链表类型即头指针类型***线性链表定义***typedef ??? ElemType;typedef struct LNode{ ElemType data;//数据域 struct LNode *next;//指针域}LNode,*LinkList;LNode node2;//定义一个结点node2;LinkList La;//定义一个链表La;LNode *p;//定义一个普通指针变量p;*****单链表******优点:空间利用好,插入删除不需要移动数据,表头操作快缺点——不能随机访问,求前驱,表长慢附加头结点:为使空表和非空表操作统一,在链表最前附设一个额外的头结点。默认链表均带头结点Status GetEle_L(LinkList L,int i,ElemType &e){ //L为带头结点元素的头指针 //第i个元素存在时,其值付给e并返回,否则返回ERROR; LNode *p = L;//P指向第0个元素结点 int j = 0;//J是该结点的位序 while(p&&j<i) { p=p->next; ++j; } if(!p||i<1) return ERROR; e=p->data; return OK; }**插入**Status ListInsert_L(LinkList &L,int i,ElemType e){ LNode *P = L; int j = 0; //定位到第i-1个结点,在其后插入一个新开辟的结点 while(p&&j<i-1) { p=p->next; ++j; } if(!p||i<1) return ERROR; LNode *q = new LNode; if(!q) exit(OVERFLOW); q->data = e; q->next = p->next; p->next = q; return OK; }**删除**Status ListDelete_L(LinkList &L,int i,ElemType &e){ LNode *p = L; int j=0; if(!p||i<1) return ERROR; while(p&&j<i-1) { p = P->next; ++j; } q = p->next; e= q->data; p->next = q->next; free(q); return OK;}**逆位序创建含n个结点的链表**Status ListCreate_L(LinkList &L,int n){ LNode *p; L = (LNode *)malloc(sizeof(LNode)); L->next = NULL; for(int i=1;i<=n;++i) { p=(LNode *p)malloc(sizeof(LNode)); InputElem(p->data); p->next = L->next; L->next = p; }}
阅读全文
0 0
- 单链表的表示和实现
- 单链表的表示和实现 - 数据结构
- 串的表示和实现
- 栈的表示和实现
- 双链表的表示和实现
- 栈的表示和实现
- 栈的表示和实现
- 串的表示和实现
- 【数据结构】线性表的单链表存储结构表示和实现
- 单链表的链式表示和实现(含代码)
- 线性表的链式表示和实现--单链表
- 线性表的链式表示和实现(单链表)
- 单链表的表示与实现
- 抽象数据类型的表示和实现方法
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 数组的顺序结构表示和实现
- 面试必备:ArrayMap源码解析
- 4.1(3)
- 在有序旋转数组中找到最小值
- 从0开始学Python--0x02. 启动Python
- 快速幂
- 单链表的表示和实现
- 第10周项目4- 哈夫曼编码的算法验证
- 设计模式(18)——备忘录 Memento
- VB.NET编写图灵聊天机器人程序
- Retrofit2源码解析02-创建Call
- Ubuntu 修改IP 后SSH 失败
- AS中使用NDK
- JavaGUI游戏准备----工具类的创建
- Socket编程-TCP非阻塞方式