单链表 头插 尾插 遍历

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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

void insertTail(struct node *pH,struct node *new)
{
struct node *p=pH;
int counter=0;

while(NULL != p->pNext)
{
p=p->pNext;
counter++;
}

p->pNext=new;
pH->data=counter+1;
}

void insertHeader(struct node *pH,struct node *new)
{
new->pNext=pH->pNext;
pH->pNext=new;
pH->data=+1;
}

void traversal(struct node *pH)
{
struct node *p=pH;

while(NULL != p->pNext)
{
p=p->pNext;
printf("data : %d ",p->data);

}
}

struct node *createNode(int data)
{
struct node *p = (struct node *)malloc(sizeof(struct node));
if(NULL == p)
{
printf("malloc error ! ");
return NULL;
}

memset(p,'',sizeof(struct node));

p->data=data;
p->pNext=NULL;

return p;
}

int main()
{
struct node *pHeader;
struct node *p,*p1,*p2;

pHeader=createNode(0);

insertHeader(pHeader,createNode(8));
insertTail(pHeader,createNode(1));
insertTail(pHeader,createNode(2));
insertTail(pHeader,createNode(3));
insertTail(pHeader,createNode(4));

printf("counter %d ",pHeader->data);

traversal(pHeader);

printf("data %d ",pHeader->pNext->data);
printf("hello world ! ");
return 0;
}

原文地址:https://www.cnblogs.com/zhangjianrong/p/11625334.html