Huoche27 2016-04-27 11: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;

p = a;
prea = a;
pa = a->next;
pb = b->next;
while(pa && pb)
{
    if(pa == pb)
    {
        pb = NULL;
        break;
    }
    else if(pa->value > pb->value) 

    {
        prea->next = pb;
        pb = pb->next;
        prea = prea->next;
        prea->next = pa;
    }
    else
    {
        if(pa->next == pb->next)
        {
            pb->next = NULL;
        }
        prea = pa;
        pa = pa->next;
    }
}

prea->next = pa ? pa : pb;
return p;

}

void print(List a)
{

Node *p = a->next;
if(!a) return;
while(p)
{
    printf("%d ", p->value);
    p = p->next;
}
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[])
{
{

int a[] = {1, 2, 3, 4};
int b[] = {0, 1, 5};
List la = getList(a, 4);
List lb = getList(b, 3);
print(la);
print(lb);
print(merge(la, lb));

}
printf("---------------\n");
{

int a[] = {0, 0, 0, 0};
int b[] = {0};
List la = getList(a, 4);
List lb = getList(b, 1);
lb->next->next = la->next->next;
print(la);
print(lb);
print(merge(la, lb));

}
{

int a[] = {0, 1, 3, 40};
int b[] = {0};
List la = getList(a, 4);
List lb = getList(b, 1);
lb->next->next = la->next->next->next;
print(la);
print(lb);
print(merge(la, lb));

}

return 0;

}

  • 写回答

1条回答

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)