指针
来源:互联网 发布:服装数据分析公式 编辑:程序博客网 时间:2024/06/09 17:21
中国大学MOOC-陈越、何钦铭-数据结构-2017春
02-线性结构1 两个有序链表序列的合并 (15分)
https://pta.patest.cn/pta/test/3512/exam/3/question/62612
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。
其中List
结构定义如下:
typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */
L1
和L2
是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge
要将L1
和L2
合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的链表头指针。
正确代码:
List Merge( List L1, List L2 ){ List front,p,q,rear; p=L1->Next; q=L2->Next; front=(List)malloc(sizeof(struct Node)); front->Next=NULL; rear=front; while(p&&q) { if(p->Data>q->Data) { rear->Next=q; q=q->Next; } else { rear->Next=p; p=p->Next; } rear=rear->Next; } rear->Next=p?p:q; L1->Next=NULL; L2->Next=NULL; return front;}
错误代码:
List Merge( List L1, List L2 ){ List front,p,q,temp; p=L1; q=L2->Next; front=(List)malloc(sizeof(struct Node)); front->Next=p->Next; // front=p;是错误的,输出NULL(后面有L1->Next=NULL;) while(p->Next&&q) { if(p->Next->Data>q->Data) { temp=q->Next; q->Next=p->Next; p->Next=q; q=temp; p=p->Next; } else p=p->Next; } if(q) p->Next=q; L1->Next=NULL; L2->Next=NULL; return front;}
front=p;是错误的。 //是没理解不光结构体有内存,指向结构体的指针也是有内存的,对于32位环境来说,所有指针变量类型都是4个字节。当然因此还产生了其他错误~~
阅读全文
0 0
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- bzoj 1083 繁忙的都市(瓶颈生成树)
- 网页打开pdf文件屏蔽打印保存解决方案
- j2ee的web项目,并发是什么意思,举个例子。
- [leetcode: Python]22. Generate Parentheses
- 更换MyEclipse的默认jdk
- 指针
- webx解决csrf漏洞
- layui-登陆
- Nslog格式汇总
- Struts2 annoatation Inteceptor(拦截器)
- Leetcode 66. Plus One
- Java继承如何实现
- 修改MFC程序标题
- java职业规划