Huoche27 2016-04-27 03:44 采纳率: 0%
浏览 1530

C语言成语求代码标注~刚刚学习了线性表~~新手小白~~求带~~~谢谢各位大神

刚刚学习了数据结构~然后老师给了一个线性表的C程序,,然后好多地方看不懂·~~~希望哪位大神帮我把每条代码的意思标注一下~~~谢谢~~~

#include
#include

typedef struct Node
{
struct Node *next;
int value;
}Node, *List;

List merge(List a, List b)
{
Node *p, *pa, *pb, *prea;
if(a == NULL || b == NULL) 0;

  1. p = a;
  2. prea = a;
  3. pa = a->next;
  4. pb = b->next;
  5. while(pa && pb)
  6. {
  7. if(pa == pb)
  8. {
  9. pb = NULL;
  10. break;
  11. }
  12. else if(pa->value > pb->value)
  13. {
  14. prea->next = pb;
  15. pb = pb->next;
  16. prea = prea->next;
  17. prea->next = pa;
  18. }
  19. else
  20. {
  21. if(pa->next == pb->next)
  22. {
  23. pb->next = NULL;
  24. }
  25. prea = pa;
  26. pa = pa->next;
  27. }
  28. }
  29. prea->next = pa ? pa : pb;
  30. return p;

}

void print(List a)
{

  1. Node *p = a->next;
  2. if(!a) return;
  3. while(p)
  4. {
  5. printf("%d ", p->value);
  6. p = p->next;
  7. }
  8. putchar('\n');

}

List getList(int a[], int len)
{
int i;
Node head = (Node)malloc(sizeof(Node));
Node p = head;
head->next = NULL;
for(i = 0; i < len; i++)
{
Node *n = (Node
)malloc(sizeof(Node));
n->value = a[i];
p->next = n;
p = n;
}
p->next = NULL;
return head;
}

int main(int argc, char *argv[])
{
{

  1. int a[] = {1, 2, 3, 4};
  2. int b[] = {0, 1, 5};
  3. List la = getList(a, 4);
  4. List lb = getList(b, 3);
  5. print(la);
  6. print(lb);
  7. print(merge(la, lb));
  8. }
  9. printf("---------------\n");
  10. {
  11. int a[] = {0, 0, 0, 0};
  12. int b[] = {0};
  13. List la = getList(a, 4);
  14. List lb = getList(b, 1);
  15. lb->next->next = la->next->next;
  16. print(la);
  17. print(lb);
  18. print(merge(la, lb));
  19. }
  20. {
  21. int a[] = {0, 1, 3, 40};
  22. int b[] = {0};
  23. List la = getList(a, 4);
  24. List lb = getList(b, 1);
  25. lb->next->next = la->next->next->next;
  26. print(la);
  27. print(lb);
  28. print(merge(la, lb));

}

return 0;

}

展开全部

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-04-27 04:59
    关注

    这种链表的注释不一定能给楼主讲清楚,如果楼主指针学的不错倒是可以
    第一次学链表的话肯定要结合图来看
    举两句的例子:
    prea->next = pb; //prea的next指针指向了pb
    pb = pb->next; //pb指向了它的next指针指向的节点,即pb指向了下一个节点
    如果楼主听不懂的话,建议找个人面对面问问

    评论
    编辑
    预览

    报告相同问题?

    悬赏问题

    • ¥15 为什么树莓派5b显示禁止连接
    • ¥20 流量太费!寻找便宜的app音视频SDK或平替方案。
    • ¥15 kubeasz部署遇到问题
    • ¥15 GUIDE to App Designer Migration Tool for MATLAB
    • ¥50 第三代非支配排序遗传算法(NSGA-Ⅲ)和多目标粒子群优化算法(MOPSO)的实现
    • ¥20 plant simulation与python com接口实时数据交互
    • ¥15 有关汽车的MC9S12XS128单片机实验
    • ¥15 求c语言动态链表相关课程有偿,或能将这块知识点讲明白
    • ¥15 FLKT界面刷新异常
    • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部