c语言简单的循环链表

数据分为4部分test.c  list.c  head.h,Makefile

list.c

#include"head.h"
//创建一个空表
Linklist  list_loop_creat()
{
    Linklist L;
	L=(Linklist  )malloc(sizeof(Lnode));//申请空间
	L->date=0;
	L->next=L;
	return L;
}

//使用头插法进行数据的插入

int  list_loop_inset(Linklist  L,int value)
{
      Linklist  p;
	  p=(Linklist  )malloc(sizeof(Lnode));
	  if(p==NULL)
	  {
         printf("apply  is fail\n");
		 return 1;
	  }
	  p->date=value;
      p->next=L->next;
	  L->next=p;
	  return 0;
}
//删除尾部
int list_loop_del_tail(Linklist L)
{
    Linklist p,s;
	p=L;
	while(p->next->next!=L)
	{
        p=p->next;	
	}
	s=p->next;
	free(s);
	s=NULL;
	p->next=L;
	return 0;
}


//遍历
void list_loop_show(Linklist L)
{ 
	Linklist  p;
	p=L;
	while(p->next!=L)
	{
	   p=p->next;
       printf("%d ",p->date);
	}
    printf("\n");
}

test,.c

#include"head.h"
int main(int argc ,char  *argv[])
{
   Linklist L;
   L=list_loop_creat();
   list_loop_inset(L,10);
   list_loop_inset(L,20);
   list_loop_inset(L,30);
   list_loop_inset(L,40);
   list_loop_inset(L,50);
   
   list_loop_show(L);
   list_loop_del_tail(L);
   list_loop_show(L);

   return 0;
 }

head.h

#ifndef  __HEAD_H
#define  __HEAD_H

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct list{

   int date;
   struct  list *next;
}Lnode,*Linklist ;
int  list_loop_inset(Linklist L,int value);
void list_loop_show(Linklist  L);
Linklist list_loop_creat();
int list_loop_del_tail(Linklist L);
#endif 

Makefile

CC=gcc
CFLAGS=-c  -O  -Wall 
obj=list.o  test.o 
xiangjie:$(obj)
	$(CC)  -o  $@   $^
%*.o:%*.c
	$(CC)  $(CFLAGS) -o $@  $<
.PHONY:clean 
clean: 
	rm -rf  *.o  xiangjie

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值