单链表(带头节点)

Posted tiange-137

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表(带头节点)相关的知识,希望对你有一定的参考价值。

/////////////////////////////////定义节点结构体

struct node
{
int data;
struct node *pnext;
};

 

////////////////////////////////////main函数

int main()
{

struct node *pHeader = creatList(0);

/*insert_tail(creatList(1),pHeader);
insert_tail(creatList(2),pHeader);
insert_tail(creatList(3),pHeader);*/

insert_head(creatList(1),pHeader);
insert_head(creatList(2),pHeader);
//creatList(1);
printf("p1的data为:%d 总的节点数为:%d ",pHeader->pnext->data,pHeader->data);
printf("p2的data为:%d 总的节点数为:%d ",pHeader->pnext->pnext->data,pHeader->data);
//printf("p3的data为:%d 总的节点数为:%d ",pHeader->pnext->pnext->pnext->data,pHeader->data);
//creatList(2);
system("pause");
return 0;
}

//////////////////////////////////创建新节点

struct node * creatList(int data)
{
struct node *p ;
p =(struct node *)malloc(sizeof(struct node));
//忘记判断了
if(p == NULL)
{
printf("创建节点指针失败");
return NULL;
}
//忘记清0了
memset(p,0,sizeof(struct node));
p->data = data;
p->pnext = NULL;
return p;
}

///////////////////////////////尾插法

void insert_tail(struct node * newNode, struct node *pHeader)
{
struct node * p = pHeader;
int length = 0;
while(p->pnext!= NULL)
{
p = p->pnext;
length++;
}
pHeader->data = length+1;
p->pnext = newNode;

}

//////////////////////////////////////头插法

void insert_head(struct node *newNode,struct node *pheader)
{
struct node * p = newNode;
p->pnext = pheader->pnext;
pheader->pnext = p;

pheader->data +=1;
}

以上是关于单链表(带头节点)的主要内容,如果未能解决你的问题,请参考以下文章

不带头结点的单链表L,设计一个递归算法逆序输出所有结点值

不带头结点的单链表的插入与删除程序写法

编写不带头结点单链表的插入操作和删除操作算法

单链表一[带头节点链表]

什么叫带头结点的链表? 什么叫不带头结点的链表?

输入一组整数,建立带头结点的单链表,并实现线性表的求长度、插入和删除等操作?