单链表 头插 尾插 遍历
#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 \n",p->data);
}
}
struct node *createNode(int data)
{
struct node *p = (struct node *)malloc(sizeof(struct node));
if(NULL == p)
{
printf("malloc error ! \n");
return NULL;
}
memset(p,'\0',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 \n",pHeader->data);
traversal(pHeader);
printf("data %d \n",pHeader->pNext->data);
printf("hello world ! \n");
return 0;
}