单链表循环代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}sqlist;
sqlist *init(void) //初始化
{
sqlist *l=NULL;
l=(sqlist *)malloc(sizeof(sqlist));
l->data=0;
l->next=l;
return l;
}
void head_insert(sqlist *l,int data) //链表头插法
{
sqlist *node=(sqlist *)malloc(sizeof(sqlist));
node->data=data;
node->next=l->next;
l->next=node;
l->data++;
}
void print(sqlist *l) //链表打印
{
sqlist *p=NULL;
p=l->next;
while(p!=l)
{
printf("%d->",p->data);
p=p->next;
}
printf("NULL\n");
}
void nail_insert(sqlist *l,int data)//链表尾插法
{
sqlist *p=l;
sqlist *node=NULL;
node=(sqlist *)malloc(sizeof(sqlist));
node->data=data;
while(p->next !=l)
{
p=p->next;
}
node->next=l;
p->next=node;
}
int delet(sqlist *l,int data) //链表删除
{
sqlist *pre=l;
// sqlist *p=l->next;
sqlist *node= l->next;
while(node != l)
{
if(node->data==data)
{
pre->next=node->next;
free(node);
return 1;
}
pre=node;
node=node->next;
}
return 0;
}
int main() //主函数
{
sqlist *l=NULL;
l=(sqlist *)malloc(sizeof(sqlist));
l=init();
head_insert(l,1);
head_insert(l,2);
head_insert(l,3);
head_insert(l,4);
nail_insert(l,6);
nail_insert(l,8);
print(l);
delet(l,2);
print(l);
free(l);
return 0;
}