哪位老哥能帮我看看我的程序哪有问题,为什么会插入不了
代码如下
#include <stdio.h>
#include <stdlib.h>
#define initsize 100
typedef struct Dnode
{
int data;
struct Dnode *prior,*next;
}Dnode,*Dlinklist;
Dlinklist tailinsert(Dlinklist &L)
{
int x;
L=(Dlinklist)malloc(sizeof(Dnode));
Dnode *s,*r=L;
scanf("%d",&x);
while(x!=999)
{
s=(Dnode *)malloc(sizeof(Dnode));
s->data=x;
r->next=s;
s->prior=r;
r=s;
scanf("%d",&x);
}
L->prior=r;
r->next=L;
return L;
}
Dnode *getelem(Dlinklist L,int i)
{
int j=1;
Dnode *p=L->next;
if(i==0)
return L;
if(i<1)
return NULL;
while(p&&j<i)
{
p=p->next;
j++;
}
return p;
}
bool cutin(Dlinklist &L,int i,int x)
{
Dnode *p,*s;
s=(Dnode *)malloc(sizeof(Dnode));
s->data=x;
p=getelem(L,i-1);
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
return true;
}
bool deleteelem(Dlinklist &L,int i)
{
Dnode *p,*s;
p=getelem(L,i-1);
s=getelem(L,i);
p->next=s->next;
s->next->prior=p;
free(s);
return true;
}
int longlist(Dlinklist L)
{
int i=0;
Dnode *p;
p=L->next;
for(i=0;p!=L;++i)
{
p=p->next;
}
free(p);
return i;
}
bool printflist(Dlinklist L)
{
printf("元素为:\n");
int i=0;
Dnode *p;
p=L->next;
for(i=1;p!=L;i++)
{
printf("%d ",p->data);
p=p->next;
}
return true;
}
int main()
{
Dlinklist L;
printf("插入元素:\n");
tailinsert(L);
printflist(L);
printf("\n查找第三个元素:");
printf("%d\n",getelem(L,3)->data);
printf("表长为%d\n",longlist(L));
cutin(L,1,8);
printf("在第1个位置插入8");
printflist(L);
deleteelem(L,2);
printf("\n删除第二个元素");
printflist(L);
return 0;
}