.h 文件 double_node.h
#define ElemType int
typedef struct Node * Pnode;
typedef struct Node
{
int data;
struct Node *prev;
struct Node *next;
} Node,* DoubleList;
void print_list(Node *pHead);
DoubleList InitLink();
void CreateList1(Pnode L,ElemType e);
void DeleteLink(Pnode L,int i);
Pnode double_find(Pnode l, int num);
.c文件
#include "double_node.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
Node *pHead = NULL, *pFoot;
printf("双链表测试\n");
Pnode list=InitLink();
CreateList1(list,56);
CreateList1(list,46);
print_list(list);
DeleteLink(list,2);
return 0;
}
DoubleList InitLink()
{
Pnode L =(Node *)malloc(sizeof(Node));
if(L == NULL) printf("内存分配失败!\n");
L->next = NULL;
L->prev =NULL;
return L;
}
void CreateList1(Pnode L,ElemType e)
{
Pnode s;
Pnode newNode=(Pnode)malloc(sizeof(Node));
newNode->data=e;
if(L->next == NULL){
L->next=newNode;
newNode->prev =L;
newNode->next =NULL;
} else{
s=L->next;
L->next =newNode;
newNode->prev=L;
newNode->next =s;
s->prev=newNode;
}
}
void DeleteLink(Pnode L,int i)
{
Pnode s =double_find(L,i);
Pnode a =s->prev;
if(s->next==NULL)
{
a->next =NULL;
}else{
Pnode b =s->next;
a->next=b;
b->prev=a;
}
free(s);
printf("删除操作!\n");
print_list(L);
}
void print_list(Node *pHead){
Node *p;
printf("打印链表:\n");
for(p=pHead->next;p!=NULL;p=p->next)
{
printf("%d ",p->data);
}
}
Pnode double_find(Pnode l, int num)
{
Pnode p;
int i=-1;
for(p=l;p!=NULL;p=p->next)
{
i++;
if(i == num)
{
return p;
break;
}
}
if(p==NULL) printf("没有你要找的位置 ");
}