#include<stdio.h>
#include<stdlib.h>
struct list
{
struct list *pr;
int data;
struct list *next;
};
struct list* Create()
{
struct list *head,*pnew,*pre;
int i;
int number = 5;
head = (struct list*)malloc(sizeof(struct list));
head->pr = NULL;
head->data = 0;
head->next = NULL;
pre = head;
for(i=1;i<number;i++)
{
pnew = (struct list*)malloc(sizeof(struct list));
pnew->pr = pre;
pnew->data = i;
pnew->next = NULL;
pre->next = pnew;
pre = pre->next;
}
return head;
}
struct list* Insert(struct list *head,int pos)
{
struct list *pnew,*end;
int i;
pnew = (struct list*)malloc(sizeof(struct list));
pnew->data = 100;
if(pos==0)
{
pnew->pr = NULL;
pnew->next = head;
head->pr = pnew;
head = pnew;
}
else
{
end = head;
if(pos>=2)
{
for(i=0;i<(pos-1);i++)
{
end = end->next;
if(end->next==NULL)
break;
}
}
pnew->pr = end;
pnew->next = end->next;
if(end->next==NULL)
pnew->next = NULL;
else
end->next->pr = pnew;
end->next = pnew;
}
return head;
}
struct list* Delete(struct list *head,int pos)
{
struct list *obj;
int i;
if(pos==0)
{
obj = head;
head->next->pr = NULL;
head = head->next;
}
else
{
obj = head->next;
if(pos>=2)
{
for(i=0;i<(pos-1);i++)
{
obj = obj->next;
if(obj==NULL)
return NULL;
}
}
obj->pr->next = obj->next;
if(obj->next!=NULL)
obj->next->pr = obj->pr;
}
free(obj);
return head;
}
int Check(struct list *head,int pos)
{
int i;
if(pos>=1)
{
for(i=0;i<pos;i++)
{
if(head->next==NULL)
return NULL;
head = head->next;
}
}
return head->data;
}
void Modify(struct list *head,int pos,int dat)
{
int i;
if(pos>=1)
{
for(i=0;i<pos;i++)
{
if(head->next==NULL)
return;
head = head->next;
}
}
head->data = dat;
}
void Print(struct list *head)
{
while(head!=NULL)
{
printf("%d\n",head->data);
head = head->next;
}
}
void main()
{
struct list *head;
int data;
head = Create();
data = Check(head,0);
printf("%d\n",data);
}
C语言双向链表
最新推荐文章于 2024-07-04 11:06:26 发布