核心思路
核心代码
#include <stdio.h>
struct Test
{
int data;
struct Test* next;
};
void printLink(struct Test* phead)
{
struct Test* point=phead;
while(point!=NULL)
{
printf("%d ",point->data);
point=point->next;
}
putchar('\n');
/*
while(1)
{
if(phead!=NULL)
{
printf("%d ",phead->data);
phead=phead->next;
}
else
{
putchar('\n');
break;
}
}
*/
}
int totalNodeNum(struct Test* phead)
{
struct Test* p;
p=phead;
int cnt=0;
while(p!=NULL)
{
cnt++;
p=p->next;
}
return cnt;
}
int searchNode(struct Test* phead,int data)
{
struct Test* p;
p=phead;
while(p!=NULL)
{
if(p->data==data)
{
return 1;
}
p=p->next;
}
return 0;
}
void insertBehind(struct Test* phead,int data,struct Test* new)
{
struct Test* p;
p=phead;
while(p!=NULL)
{
if(p->data==data)
{
new->next=p->next;
p->next=new;
}
p=p->next;
}
}
struct Test* insertFront(struct Test* phead,int data,struct Test* new)
{
struct Test* p;
p=phead;
if(p->data==data)
{
new->next=p;
return new;
}
while(p->next!=NULL)
{
if(p->next->data==data)
{
new->next=p->next;
p->next=new;
return phead;
}
p=p->next;
}
return phead;
}
struct Test* deleteNode(struct Test* head,int data)
{
struct Test* p=head;
if(p->data==data)
{
head=head->next;
return head;
}
while(p->next!=NULL)
{
if(p->next->data==data)
{
p->next=p->next->next;
return head;
}
p=p->next;
}
return head;
}
int main()
{
struct Test t1={1,NULL};
struct Test t2={2,NULL};
struct Test t3={3,NULL};
struct Test t4={4,NULL};
struct Test t5={5,NULL};
struct Test t6={6,NULL};
struct Test t7={7,NULL};
struct Test t8={8,NULL};
t1.next=&t2;
t2.next=&t3;
t3.next=&t4;
t4.next=&t5;
t5.next=&t6;
t6.next=&t7;
t7.next=&t8;
printLink(&t1);
int total=0;
total=totalNodeNum(&t1);
printf("total num=%d\n",total);
struct Test t100={100,NULL};
insertBehind(&t1,6,&t100);
printf("after inserting behind:\n");
printLink(&t1);
struct Test* head=&t1;
struct Test t99={99,NULL};
head=insertFront(head,1,&t99);
printf("after inserting front:\n");
printLink(head);
struct Test t88={88,NULL};
head=insertFront(head,8,&t88);
printf("after inserting front:\n");
printLink(head);
head=deleteNode(head,99);
printf("after deleting node:\n");
printLink(head);
head=deleteNode(head,8);
printf("after deleting node:\n");
printLink(head);
return 0;
}
运行结果