数据结构_单链表(带头节点)
来源:互联网 发布:linux卸载软件 yum 编辑:程序博客网 时间:2024/06/06 00:50
单链表(以带头节点的单链表为例)的表示图如下:
1. 定义单链表结构,结构体中包括 data 数据域和 next 指针域,代码如下:
typedef struct Node{int data;//数据域struct Node *next;//指向下一个节点}Node,*List;//List == Node*
2. 单链表的初始化,代码如下:
void InitList(List plist){assert(plist != NULL);plist->next = NULL;//plist->data不用操作}
3. 利用头插法进行插入,代码如下:
bool Insert_Head(List plist,int val){Node *p = (Node *)malloc(sizeof(Node));p->data = val;p->next = plist->next;plist->next = p;return true;}
4. 利用尾插法进行插入,代码如下:
bool Insert_Tail(List plist,int val){Node *p = (Node *)malloc(sizeof(Node));p->data = val;Node *q;for(q=plist;q->next!=NULL;q=q->next) ;//将p插入在q的后面p->next = q->next;q->next = p;return true;}
5. 按照关键字进行查找,代码如下:
Node *Search(List plist,int key){for(Node *p=plist->next;p!=NULL;p=p->next){if(p->data == key){return p;}}return NULL;}
6. 查找关键字 key 的前驱,代码如下:
static Node *SearchPri(List plist,int key){for(Node *p=plist;p->next!=NULL;p=p->next){if(p->next->data == key){return p;}}return NULL;}
7. 按照关键字进行删除,代码如下:
bool Delete(List plist,int key){Node *p = SearchPri(plist,key);if(p == NULL){return false;}Node *q = p->next;p->next = q->next;//将q从链表中剔除free(q);return true;}
8. 判空,代码如下:
bool IsEmpty(List plist){return plist->next == NULL;}
9. 求单链表的长度,代码如下:
int GetLength(List plist){int count = 0;for(Node *p=plist->next;p!=NULL;p=p->next){count++;}return count;}
10. 打印单链表,代码如下:
void Show(List plist){for(Node *p=plist->next;p!=NULL;p=p->next){printf("%d ",p->data);}printf("\n");}
11. 清楚单链表,代码如下:
void Clear(List plist){Destroy(plist);}
12. 摧毁单链表,代码如下:
void Destroy(List plist){Node *p;while(plist->next != NULL)//删除第一个数据节点{p = plist->next;plist->next = p->next;free(p);}/*Node *p = plist->next;}
13. 单链表逆置,代码如下:
void Revers(List plist){//头插的思想if(plist==NULL || plist->next==NULL || plist->next->next==NULL){return ;}Node *p = plist->next;Node *q;plist->next = NULL;//while(p != NULL){q = p->next;//将p头插进链表p->next = plist->next;plist->next = p;p = q;}}
阅读全文
0 0
- 数据结构_单链表(带头节点)
- 数据结构5带头节点单链表
- 数据结构之单链表——带头节点和不带头节点(C/C++)
- 数据结构(一)单链表的基本操作(不带头节点)
- 数据结构(二)单链表的逆序(带头节点)
- 【c++版数据结构】之单链表的实现(带头结点以及尾节点)
- 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)
- 【c++版数据结构】之用带头节点的单链表实现一元多项式(C语言版)
- 数据结构双语课->不带头节点的单链表实现
- 【数据结构】链表的实现(带头节点)
- 单链表的实现(不带头节点)
- 带头节点的单链表
- 带头节点的单链表
- 带头节点的单链表
- 带头节点的单链表
- 带头节点单链表逆序
- 带头节点单链表操作
- 数据结构基础3_带头结点的单链表
- Android开发基础知识之Android Studio环境配置
- 端口
- Java集合框架
- 二叉树前序、中序、后序遍历相互求法
- 《汇编语言(第3版)》王爽 纠错
- 数据结构_单链表(带头节点)
- 四种字节流复制文件的效率比较
- DirectX 渲染 学习笔记(1)
- SAS宏语句及其功能含义
- 包含MIN函数的栈
- Android将图片保存到本地文件
- 吴恩达深度学习课程第二部分笔记要点
- wireshark使用Tips
- 平安科技2017笔试题目