#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#define MAX 1002
typedef struct node
{
char data;
struct node *next;
struct node *prior;
}dlinklist;
/*
void create_dlink_h(dlinklist *l)
{
// dlinklist *p;
l->next=l;
l->prior=l;
}
*/
void create_dlink(dlinklist *l,int n)
{
dlinklist *p,*e;
l->next=NULL;
// l=(dlinklist *)malloc(sizeof(dlinklist));
for(int i=0;i<n;i++)
{
p=(dlinklist *)malloc(sizeof(dlinklist));
p->data=(char)i+97;
if(l->next==NULL)
{
l->next=p;
e=p;
}
else {
p->prior=e;
e->next=p;
e=p;
}
}
}
void insert_dlink(dlinklist *l,int j,char e)
{
dlinklist *p,*q;
if(j<0)
{
printf("position error/n");
exit(0);
}
int i=0;
p=(dlinklist *)malloc(sizeof(dlinklist));
p->data=e;
q=l;
while(q!=NULL && i<j)
{
i++;
q=q->next;
}
if(i==j)
{
if(q==NULL) l=q;
else
{
p->prior=q->prior;
// q->prior=p->prior;
q->prior->next=p;
q->prior=p;//p is new;
p->next=q;
}
}
else printf("end position error/n");
}
void delete_dlink(dlinklist *l,int j)
{
dlinklist *p,*q;
p=l;
int i=0;
if(j<0)
{
printf("j error/n");
exit(0);
}
while(p && i<j-1)
{
i++;
p=p->next;
}
if(i==j-1)
{
q=p->next;
p->next=q->next;
q->prior=p->prior;
}
}
void display(dlinklist *l)
{
dlinklist *p,*e;
p=l->next;
while(p!=NULL)
{
e=p;
printf("%c ",p->data);
p=p->next;
}
/* printf("/n");
// e=e->prior;
// printf("%c ",e->data);
while(e!=NULL)
{
printf("%c ",e->data);
e=e->prior;
}
*/
printf("/n");
}
int main()
{
dlinklist *l;
l=(dlinklist *)malloc(sizeof(dlinklist));
// create_dlink_h(l);
int n;
printf("input number:/n");
scanf("%d",&n);
create_dlink(l,n);
display(l);
insert_dlink(l,3,68);
delete_dlink(l,4);
display(l);
return 0;
}
双向链表
最新推荐文章于 2024-09-04 20:30:50 发布