我在之前一篇博客《C语言实现单链表(不带头结点)的基本操作》中具体实现了不带头结点的单链表的11种操作:如计算链表长度、初始化、创建链表、清空链表等等。但是在实际使用中,带头结点的单链表往往比不带头结点的单链表用的更多,使用也更为方便。因为不用单独考虑第一个节点的情况了,第一个节点和其他后续节点的处理全都一样了,简化操作。这篇博客将会来实现带头结点的单链表的11种操作。代码上传至: https:/...
分类:
编程语言 时间:
2016-03-01 14:43:30
阅读次数:
243
/*本次操作是对带头节点单链表的操作 包括删除 插入 判空 建立包括删除插入函数 显示函数目的是为了对单链表做一个基本操作的总结----1*/#include#include#include#define OK 1#define ERROR -1#define OVERFLOW -2#define ...
分类:
其他好文 时间:
2015-12-02 17:47:12
阅读次数:
178
#pragmaonce
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<memory.h>
#defineDataTypeint//int可以改写为其它数据类型
typedefstructNode
{
DataTypedata;
structNode*next;
}Node,*pNode;//定义结点结构体
//建立带头结点..
分类:
其他好文 时间:
2015-11-25 01:15:10
阅读次数:
374
一、首先,看看单链表中第i个元素的删除:StatusListDelete_L(LinkList&L,inti,ElemType&e){//在带头结点的单链表L中,删除第i个元素,并由e返回其值p=L;j=0;while(p->next&&jnext;++j;}if(!(p->next)||jnext...
分类:
其他好文 时间:
2015-10-21 13:54:01
阅读次数:
201
#ifndef _SEQLIST_
#define _SEQLIST_
#include
using namespace std;
#include
template class Slist;
//节点类
template
class Node
{
public:
Node() :data(Type()), next(NULL){}
Node(Type d, Node *n = NULL...
分类:
编程语言 时间:
2015-08-29 09:47:19
阅读次数:
236
所实现的单链表的结构如下图所示:
循环单链表的实现,和上一篇文章单链表的实现大致相同点击打开链接,略有区别:
1:循环判断的条件不再是s == NULL或者s->next == NULL,而是他们是否等于头指针。2: 断开链表时的处理,尾节点的next不是NULL,而是指向头结点
具体细节参考上一篇文章
头文件:SCList.h
#ifndef SCLIST_H
#define...
分类:
编程语言 时间:
2015-08-21 21:34:32
阅读次数:
312
所实现的双链表的结构如下图所示:
双链表的实现,和第一篇文章单链表的实现大致相同点击打开链接
本篇文章在构建节点的同时,初始化构建节点的前驱和后继,具体细节参考下列代码
头文件:DList.h
#ifndef DLIST_H_
#define DLIST_H_
typedef enum{FALSE,TRUE}Status;
#include
#include
using na...
分类:
编程语言 时间:
2015-08-21 21:33:09
阅读次数:
308
所实现的单链表的结构如下图所示:
头文件:SList.h
#include
#include
using namespace std;
typedef enum{FALSE,TRUE}Status;
template
class List;
template
class ListNode
{
friend class List; //友元类可以访问该类的成员
private...
分类:
编程语言 时间:
2015-08-21 11:21:47
阅读次数:
245
图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List)。1. 邻接表的结点结构(1)表结点结构 ┌────┬───┐ │adjvex │next │ └────┴─...
分类:
其他好文 时间:
2015-08-20 16:44:01
阅读次数:
132
例一:求表长
设一个移动工作指针p和一个计数器j,初始时p=L->next,J=0,若p非空,则计数器加1,并将指针下移一个位置,直到达链表尾,算法描述如下:int LinkListLen(LinkList L)
{
//求带头结点的单链表L的长度
LNode *p
int j=0;
p=L->next;//p指向第一个结点
while(p){j++;p=p->ne...
分类:
其他好文 时间:
2015-08-02 20:09:50
阅读次数:
191