关于表头链表
来源:互联网 发布:如何判断咬肌肥大知乎 编辑:程序博客网 时间:2024/06/05 18:39
在链表的操作中由于头结点缺少“前驱节点”而导致很多对链表的操作必须分情况,但是如果头结点有“前驱节点”的话,问题的代码会变得更简单一点,表头结点的产生恰恰解决了这个问题,创建表头结点的代码如下:
<pre class="c" name="code">#include <stdio.h>#include <stdlib.h>typedef struct node{ int val; struct node *next;}Node;//类型定义结构体Node *creatlistlink(int *a,int n){ Node *tail,*head,*new_node; int i; tail=head=(Node *)malloc(sizeof(Node));//创建表头节点 tail->next=NULL; for(i=0;i<n;i++) //尾插创建链表 { new_node=(Node *)malloc(sizeof(Node));//为新节点分配内存 new_node->next=NULL; new_node->val=a[i]; tail=tail->next=new_node;//tail移动创建的节点上去 } return head;}
在表头节点创建好了之后,对链表的操作接变得很简单了,以删除链表中的元素为例来看一看表头结点带来的好处:
void Del_val(Node *h,int key)//带表头节点的删除算法{ Node *p,*delp=NULL; for(p=h;p->next!=NULL;p=p->next){ //跑链表 if(p->next->val==key){ //找到待删节点 delp=p->next; //delp指向待删节点 p->next=delp->next; //挂链 free(delp);//释放节点 break; } }
在无表头的链表中对链表中的节点排序如果头结点需要排序的话由于头结点没有前驱节点会使得头结点待排序的情况分开讨论,而带表头的链表就解决了这个问题。
0 0
- 关于表头链表
- 带表头链表
- 关于链表头插尾插的个人图解
- 关于gridview表头固定
- 表头插入法建立链表
- 动态表头的双向链表
- 有表头链表的基本操作
- 不带表头的单向链表,带表头的单向链表,带表头的单向循环链表,带表头的双向循环链表。
- 无表头节点的单向链表
- 带表头的循环链表
- 带表头的单向链表
- 带表头的单向循环链表
- 带表头结点的单向链表
- 关于CListCtrl表头的操作
- 关于Web中的冻结表头
- 链表头结点作用
- 链表头结点作用
- 链表头结点作用
- windows访问Linux共享的文件
- 安装WebCenter 11g
- 反向排列句子中的词(Reverse Words in a String)
- 你好,C++(2)1.3 C++世界版图1.4 如何学好C++
- Key Character Map Files - http://source.android.com
- 关于表头链表
- Windows 互斥对象在线程同步上的运用
- 【转】stack 和 stack frame?
- ACM大牛roba的facebook心经
- LeetCode 15 Single Number II
- Ubuntu安装搜狗输入法
- dispatch对象
- 莱特币行情预测
- 最新ffmpeg编译和用eclipse进行源码调试