单链表创建
struct node
{
int data;
node *next;
};
//创建链表
node* CreateList()
{
node *Head;
node *p;//新建的节点
node *s;//链表的尾端
int data;
bool cycle=true;
Head=(node*)malloc(sizeof(node));
s=Head;
while(cycle)
{
scanf("%d",&data);
if(data!=0)
{
p=(node*)malloc(sizeof(node));
p->data=data;
s->next=p;
s=p;
}
else
cycle=false;
}
Head=Head->next;
s->next=NULL;
return Head;
}
测链表长度
int length(node *Head)
{
int len=0;
node *nnode;
nnode=Head;
while(nnode!=NULL)
{
len++;
nnode=nnode->next;
}
return len;
}
打印链表
void printList(node *Head)
{
node *nnode;
nnode=Head;
if(Head==NULL)
return ;
while(nnode!=NULL)
{
printf("%d",nnode->data);
nnode=nnode->next;
}
}
删除链表
node* deletenode(node *Head,int num)
{
if(Head==NULL)
return 0;
node *tobedelete;
node *nnode;
tobedelete=Head;
while(num!=tobedelete->data&&tobedelete->next!=NULL)
{
nnode=tobedelete;
tobedelete=tobedelete->next;
}
if(num==tobedelete->data)
{
if(tobedelete==Head)
Head=Head->next;
else
{
nnode->next=tobedelete->next;
}
free(tobedelete);
}
return Head;
}