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

2019-04-17 14:47

13

while (p && p->data!=y) { pre=p; p=p->next; }

if (p)/*找到了值为 y 的结点*/

{ s=(linklist)malloc(sizeof(linknode)); s->data=x; s->next=p; pre->next=s; } }

void main() /*测试程序*/ {linklist head; int y,x;

head=creatlinklist(); /*创建单链表*/

print(head); /*输出单链表*/

printf(\请输入 y 与 x 的值:\\n\ scanf(\ insert(head,y,x); print(head); }

程序的一种运行结果如下图所示:

3.5 设计一个算法,判断一个单链表中各个结点值是否有序。 【答】:

#include \

int issorted(linklist head,char c)

/*当参数 c=’a’时判断链表是否为升序,当参数 c=’d’是判断链表是否为降序*/ { int flag=1;

linklist p=head->next; switch (c)

{case 'a':/*判断带头结点的单链表 head 是否为升序*/

14

while (p &&p->next && flag)

{if (p->data<=p->next->data) p=p->next; else flag=0;

}

break;

case 'd':/*判断带头结点的单链表 head 是否为降序*/ while (p &&p->next && flag)

{if (p->data>=p->next->data) p=p->next; else flag=0;

}

break;

}

return flag; }

int main() /*测试程序*/ { linklist head;

head=creatlinklist(); print(head);

if (issorted(head,'a')) printf(\单链表 head 是升序排列的!\\n\ else

if (issorted(head,'d')) printf(\单链表 head 是降序排列的!\\n\ else printf(\单链表 head 是无序的!\\n\}

程序运行时的三种输出结果如下图所示:

3.6 设计一个算法,利用单链表原来的结点空间将一个单链表就地转置。 【答】:

#include \ void verge(linklist head)

{/*本函数的功能是就地倒置带头结点的单链表*/

15


数据结构(第二版)习题答案第3章(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《高等教育学》案例分析练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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