代码分为4部分 ,list.c,test.head.h Makefile
list.c
#include"head.h"
//创建一个双链表(空)
Linklist link_list_creat()
{
Linklist L,s,r;
L=(Linklist)malloc(sizeof(Lnode));
if(L==NULL)
{
printf("apply is fail\n");
return NULL;
}
L->date=0;
L->next=L;
L->prior=L;
r=L;
int x;
while(1)
{
printf("please input is value:");
scanf("%d",&x);
if(x==-1)
{
break;
}
s=(Linklist)malloc(sizeof(Lnode));
if(s==NULL)
{
printf("apply is failed\n");
return NULL;
}
s->date=x;
s->prior=r;
s->next=r->next;
r->next=s;
L->prior=s;
r=s;
}
return L;
}
//数据查找
Linklist link_list_find(Linklist L,int n)
{
Linklist p;
p=L->next;
int j=0;
if(n<0)
{
printf("n is not exist\n");
return NULL;
}
while(p!=L&&j<n)
{
p=p->next;
j++;
}
if(j==n)
{
return p;
}
else
{
return NULL;
}
}
/*
//数据查找
Linklist link_list_find(Linklist L,int n)
{
Linklist p;
p=L->next;
int j=0;
if(n<0)
{
printf("n is not exist\n");
return NULL;
}
while(j<n)
{
p=p->next;
j++;
if(p==L)
{
printf("is not exit\n");
return NULL;
}
}
return p;
}*/
//数据的插入使用
int link_list_inset(Linklist L,int i,int value)
{
Linklist p,s;
s=(Linklist)malloc(sizeof(Lnode));
if(s==NULL)
{
printf("apply is fail\n");
return 1;
}
s->date=value;
p=link_list_find(L,i);
if(p==NULL)
{
printf("apply is fail\n");
return 1;
}
s->prior=p->prior;
s->next=p;
p->prior->next=s;
p->prior=s;
return 0;
}
//数据的删除
int link_list_del(Linklist L,int i)
{
Linklist p;
p=link_list_find(L,i);
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
p=NULL;
return 0;
}
//遍历
void link_list_show(Linklist L)
{
Linklist p;
p=L->next;
while(p!=L)
{
printf("%d ",p->date);
p=p->next;
}
printf("\n");
}
head.h
#ifndef __HEAD_H
#define __HEAD_H
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct link_list{
int date;
struct link_list *next;//后继
struct link_list *prior;//前驱
}Lnode,*Linklist;
Linklist link_list_creat();
extern void link_list_show(Linklist L);
Linklist link_list_find(Linklist L,int n);
int link_list_inset(Linklist L,int n,int value);
int link_list_inset_tail(Linklist L);
int link_list_del(Linklist L,int i);
#endif
test.c
#include"head.h"
int main(int argc,char *argv[])
{
Linklist L;
L=link_list_creat();
link_list_show(L);
link_list_del(L,2);
link_list_show(L);
return 0;
}
Makefile
CC=gcc
CFLAGS=-c -O -Wall
obj=list.o test.o
yuxiang:$(obj)
$(CC) -o $@ $^
%*.o:%*.c
$(CC) $(CFLAGS) -o $@ $<
.PHONY:clean
clean:
rm -rf *.o yuxiang