q = new DLinkNode(x)
q.perv = p.prev
q.next = p
p.prev.next=q
p.prev =q
q.perv = p.prev
q.next = p
先把q的下一个结点=p
这是在q前面插入了p点前
p.prev.next=q
把以前P当个下一个结点的点 的下一个结点改成Q
p.prev =q
把P的前一个结点改成Q
相当于从p前面砍一刀再把两端的绳子绑在q结点上
完成
你首先要建立一个链表啊,我给你写个简单的程序,你可以参考一下:#include<stdio.h>
#include<malloc.h>
#define ok 1
#define error 0
typedef int Status
typedef struct test
{
int a
test *next
}test,*ptest
Status create(ptest head)
{
if(!head)
{
return error
}
ptest p = head
while(1)
{
ptest q = p
p->next = (ptest)malloc(sizeof(test))
p = p->next
printf("input number:")
scanf("%d",&p->a)
if(p->a == 0)
{
q->next = NULL
free(p)
return ok
}
}
return error
}
Status output(ptest head)
{
if(!head)
{
return error
}
for(ptest p = head->nextp != NULLp = p->next)
{
printf(" %d ",p->a)
}
return ok
}
Status main()
{
test head
if(create(&head))
{
printf("链表创建成功!!!\n\n")
if(output(&head))
{
printf("输出成功!!")
}
else
{
printf("输出地失败!!!")
}
}
else
{
printf("链表创建失败!!!\n\n")
return error
}
return ok
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)