**
C语言双向链表的实现
**
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void link(int number);
void search();
struct Node{
int age;
struct Node *next;
struct Node *perv;
};
struct Node *head=NULL;
struct Node *tail=NULL;
int size=0;
void link(int number){
struct Node *p;
struct Node *Data=(struct Node*)malloc(sizeof(struct Node));
Data->age=number;
Data->next=NULL;
if(tail==NULL||head==NULL){
tail=Data;
head=tail;
}else{
p=tail;
tail->next=Data;
tail=Data;
tail->perv=p;
}
size++;
}
void search(){
struct Node *cur=head;
while(cur!=NULL){
printf("%d\n",cur->age);
cur=cur->next;
}
printf("NO node\n");
}
void delete(int data){
int i=0;
struct Node *cur=head;
for(i=0;i<data-2;i++){
cur=cur->next;
}
struct Node *next=cur->next->next;
cur->next=next;
size--;
}
int main(){
link(2);
link(4);
link(5);
link(0);
link(4);
search();
printf("%d\n",size);
delete(3);
printf("----------------------------------\n");
search();
int i=0;
struct Node *cur=tail;
while(cur!=NULL){
printf("perv=%d\n",cur->age);
cur=cur->perv;
}
return 0;
}
文章评论