双向链表

来源:互联网 发布:剑三正太捏脸数据南风 编辑:程序博客网 时间:2024/05/20 06:29
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int date;
struct node *next;
struct node *prior;
}node;
void inlist1(node *l)
{
node *s,*p=l;
int a;
printf("请输入链表值l个数:");
    scanf("%d",&a);
printf("请输入链表值:");
for(int i=1;i<=a;i++)
{
        int e;
scanf("%d",&e);
s=(node *)malloc(sizeof(node));
s->date=e;
p->next=s;
s->prior=p;
p=s;
}
p->next=l;
l->prior=p;
}
void sert(node *l)
{
node *s,*p=l,*r;
int e,i,k=0;
printf("请输入插入元素:");
scanf("%d",&e);
printf("请输入插入位置:");
scanf("%d",&i);
while(p->next!=l&&k<i-1)
{
p=p->next;
k++;
}
r=p->next;
s=(node *)malloc(sizeof(node));
s->date=e;
s->next=p->next;
p->next=s;
s->prior=p;
r->prior=s;
   p=l;
   while(p->next!=l)
   {
  p=p->next;
  printf("%d",p->date);
   }
   printf("\n");
}
void delist(node *l)
{
node *p;
int i,k=0;
printf("请输入删除节点i:");
scanf("%d",&i);
p=l;
while(p->next!=l&&k<i)
{
p=p->next;
k++;
}
    p->prior->next=p->next;
p->next->prior=p->prior;
p=l;
   while(p->next!=l)
   { 
  p=p->next;
  printf("%d",p->date);
   }
   printf("\n");
}
int main()
{
node *l=(node *)malloc(sizeof(node));
inlist1(l);
sert(l);
delist(l);
return 0;
}
0 0
原创粉丝点击