单链表 头插 尾插 遍历 删除

#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);

}
}

void deleteNode(struct node *pH,int data)
{
struct node *p=pH;
struct node *tmp;

while(NULL != p->pNext)
{
tmp=p;
p=p->pNext;
printf("data : %d \n",p->data);
if(p->data == data)
{
if(NULL == p->pNext)
{
tmp->pNext=NULL;
free(p);
}
else
{
tmp->pNext=p->pNext;
free(p);
}
pH->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));

deleteNode(pHeader,4);
deleteNode(pHeader,8);

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

扫描二维码关注公众号,回复: 7427916 查看本文章

traversal(pHeader);

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

猜你喜欢

转载自www.cnblogs.com/zhangjianrong/p/11625430.html