www.5213.net > 双向链表的创建

双向链表的创建

我觉得不算,首先你那个创建双向链表节点并将其加入到链表时,next没有赋值,双向双向(首先创建该节点是,pre与next都要指向自己,其次加入到链表时,要同时为pre与next赋值,例如:q->next = p ->next;p->next = q; q->pre=q->pre->next; q->pre->next = q;)双向链表只需要一个全局的头节点就行,不需要俩个.双向链表循环 不是判断pre或next是否为null的,可以自己上网再看看资料吧.

双向链表的建立就是在每个链表结点加上一个父指针和一个子指针,一个指向前一个结点,一个指向后一个结点.

你把这个 函数getelem声明定义都放到调用之后了当然会有问题其次listinsert函数我觉得你都没有理解它是干什么的,怎么就随便定义了两个指针p,s,你没有注意到p你一直都没有进行初始化吗还有linklode,*linklist两种类型的使用,在你的程序中很多地方都是可以有linklist来代替linklode *的,不知道你注意到没有我觉得你先看看数据结构实现方面的书

#include #include struct list{ int data; struct list *next; struct list *pre; }; typedef struct list node; typedef node *link; link front=NULL,rear,ptr,head=NULL; link push(int item){ link newnode=(link)malloc(sizeof(node)); newnode->data=item; if(head==

一个节点有三个私有常量,一个数据,另外两个是指向前节点和后节点的指针

正确答案是DA:p->next=s;s->prior=p;p->next->prior=s; //前面执行了p->next=s;这句,那么p->next->prior=s等价于s->prior=s,显然是错误的s->next=p->next;B:p->next=s;p->next->prior=s; //和A的错误相同s->prior=p;s->next=p->next;C:s->prior=p;s->next=p->next;p->next=s;p->next->prior=s; //执行了上一句p->next=s之后,p->next->prior=s等价于s->prior=s,显然错误只有D的答案是正确的

[图文] 在循环双链表的p所指结点之后插入s所指结点的操作是()A.P>next=s;B.p>next=s; s>prior=p; p>next>prior=s; p>next>prior=s; s>prior=p; s>next=p>next; s>next=p>nextC.s>

网站地图

All rights reserved Powered by www.5213.net

copyright ©right 2010-2021。
www.5213.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com