单链表
来源:互联网 发布:r语言 数据挖掘 编辑:程序博客网 时间:2024/05/22 00:33
用链接存储方式存储的线性表称为链表。链表主要有三种实现方式:单链表,循环链表和双向链表。
单链表的定义:一个单链表有数据域和指针域组成。 其中数据域存放该节点的数据域的值,指针域next存放该节点的后继结点的地址信息。
一 单链表的顺序存储结构:
链表的插入操作: ListInsert (*L, i, e) , 即在线性表的第i个位置插入新元素e;
插入算法思路:
1. 如果插入位置不合理,跑出异常(线性表的长度大于Maxsize, 要插入的位置小于1, 或者要插入的位置大于链表长度);
2. 从最后一个元素开始向前遍历到第i个位置,分别将它们向后移动一个位置;
3. 将要插入的元素填入到位置i之前;
4. 线性表长度加1。
void ListInsert(Sqlist *L, int i, ElemType e){int k = 0;if (i>L->length+1 || i<1 || L->length == MaxSize ) {return ERROR; //i 不在范围内,或者是顺序表已经满了,线性表下标是从1开始}if (i <= L->length) //若插入数据位置不在表尾{for (k = L->length-1; k>=i-1; k--){L->data[k+1] = L->data[k];}}L->data[i-1] = e;L->length++;}
单链表的删除操作:
void ListDelete (Sqlist *L, int i, ElemType *e){int k = 0;if (i>L->length+1 || i<1 || L->length == MaxSize ) {return ERROR; //i 不在范围内,或者是顺序表已经满了}if (i < L->length) //若插入数据位置不在表尾{for (k = i; k<L->length-1; k++){L->data[k-1] = L->data[k];}}e = L->data[i-1];L->length--;}
二 单链表的链式存储结构:
单链表的查找操作:
void FindElem (LinkList L, int i, ElemType *e){int j;LinkList p;p = L->next;j = 1;while (p && j<i){p = p->next;j++;}if (!p || j>i){printf ("Opps! Error!\n");}*e = p->data;}
单链表的插入操作:
void LinkInsertElem (LinkList *L, int i, ElemType e){int j;LinkList p, s;p = *L;j = 1;while (p && j<i){p = p->next;j++;}if (!p || j>i){printf ("Opps! Error!\n");}s = (LinkList)malloc(sizeof(Node));s->data = e;s->next = p->next;p->next = s;}单链表的删除操作:
void LinkDelete(LinkList *L, int i, ElemType e){int j;LinkList p, q;p = *L;j = 1;while (p->next && j<i){p = p->next;j++;}if (!(p->next) || j>i){printf ("Opps! Error!\n");}q = p->next;p->next = q->next;e = q->data;free(q);}
0 0
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 二叉堆(Binary_Heap)
- Java基础知识
- 关于js中单引号(')和双引号(")的使用以及转义的理解
- 参考第三人称Character Controller实现
- 醉了~~醉了~
- 单链表
- Spark Camera's recording meter Deconstructing a minimal camera control that combines form and funct
- 【JAVA】【NIO】11、Java NIO DatagramChannel
- Visual C++ 2010 MSXML使用示例
- 你所不知到的C++ 之 多重继承
- Kafka Manager安装笔记
- 一卡易:构建最具移动消费属性的微信会员管理营销平台
- OVa Online Judge 学习笔记
- Oracle sqlplus 常用命令总结