数据结构(第二版)习题答案第3章

2026/4/29 5:09:56

s->llink=r;

r->rlink=s;

r=s;

scanf(\

}

return head; }

/*输出双链表的容*/

void print(dlinklist head) { dlinklist p;

p=head->rlink;

printf(\双链表的容是:\\n\ while (p)

{ printf(\ p=p->rlink;

}

}

本题的求解程序如下: #include #include \

void insertxaty(dlinklist head,datatype y,datatype x) { dlinklist s,p;

/*首先在双链表中找 y 所在的结点,然后在 y 前面插入新结点*/ p=head->rlink;

while (p && p->data!=y) p=p->rlink;

if (!p) printf(\双链表中不存在值为 y 的结点,无法插入新结点!\\n\ else /*插入值为 x 的新结点*/ { s=(dlinklist)malloc(sizeof(dnode)); s->data=x; s->rlink=p;

s->llink=p->llink; p->llink->rlink=s; p->llink=s;

}

}

void main() /*测试函数*/

{ dlinklist head;

datatype x,y;

19

head=creatdlinklist(); print(head);

printf(\请输入要输入的位置结点值 y:\\n\ scanf(\

printf(\请输入要输入的结点值 x:\\n\ scanf(\

insertxaty(head,y,x);/*在值为 y 的结点前插入值为 x 的新结点*/ print(head);/*输出新的双链表*/ getch(); }

本程序的一组测试情况如下图所示。

3.10 设计一个算法,从右向左打印一个双链表中各个结点的值。 【答】:

本题的双链表定义同题 3.9,实现从右向左打印双链表的各个结点的值可以用递归程序实 现如下:

#include #include \

void vprint(dlinklist head)

{ /*递归方法从右向左打印双链表的值*/ if (head->rlink)

{vprint(head->rlink);

printf(\

}

}

void main() /*测试函数*/ { dlinklist head;

head=creatdlinklist(); print(head);

printf(\从右向左打印的双链表的容是:\\n\

20

vprint(head); getch(); }

本程序的一组测试情况如下图所示。

3.11 设计一个算法,将一个双链表改建成一个循环双链表。 【答】:

#include #include \

/*将一个双链表改成循环双链表*/ void dlinktocdlink(dlinklist head) { dlinklist r; r=head;

while (r->rlink) /*寻找尾结点*/ r=r->rlink;

head->llink=r; r->rlink=head; }

void printcdlink(dlinklist head) { /*打印双链表*/ dlinklist p; p=head->rlink; while (p!=head)

{printf(\ p=p->rlink;

}

}

int main() /*测试函数*/ { dlinklist head;

head=creatdlinklist(); dlinktocdlink(head);

printf(\循环双链表的容是:\\n\ printcdlink(head); }

21


数据结构(第二版)习题答案第3章.doc 将本文的Word文档下载到电脑
搜索更多关于: 数据结构(第二版)习题答案第3章 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219