链表1:简介、遍历、节点个数、链表查找

1. 链表是个好东西(121.9.1)

2. 链表和数组区别及实现(122.9.2)

  • 显示行号
    :set nu
  • link1.c
#include <stdio.h>

struct Test
{
        int data;
        struct Test *next;
};

int main()
{
        int i;

        int array[]={1,2,3};
        for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
                printf("%d ",array[i]);
        }
        putchar('\n');

        struct Test t1={1,NULL};
        struct Test t2={2,NULL};
        struct Test t3={3,NULL};
                 
        t1.next=&t2;
        t2.next=&t3;

        printf("use t1 to print three nums\n");
        printf("%d %d %d\n",t1.data,t1.next->data,t1.next->next->data);

        return 0;
}

3. 链表静态添加和动态遍历(123.9.3)

  • link1.c
#include <stdio.h>

struct Student
{
        char *name;
        int age;
        int (*p)(int age);
        struct Student *next;
};

struct Test
{
        int data;
        struct Test *next;
};

void printLink(struct Test *head)
{
        struct Test *point;
        point=head;
        while(point != NULL){
                printf("%d ",point->data);
                point=point->next;
        }
        putchar('\n');
}


int main()
{
       int i;
        int array[]={1,2,3};
        for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
                printf("%d ",array[i]);
        }
        putchar('\n');

        struct Test t1={1,NULL};
        struct Test t2={2,NULL};
        struct Test t3={3,NULL};
        struct Test t4={4,NULL};
        struct Test t5={5,NULL};
        struct Test t6={6,NULL};

        t1.next=&t2;
        t2.next=&t3;
        t3.next=&t4;
        t4.next=&t5;
        t5.next=&t6;

        printf("use t1 to print three nums:\n");
//      printf("%d %d %d %d\n",t1.data,t1.next->data,t1.next->next->data,t1.next->next->next->data);
        printLink(&t1);
        return 0;
}                                                                                                                                                                                      

4. 链表遍历中的point=point-next(124.9.4)

5. 统计链表节点个数及链表查找(125.9.5)

在这里插入图片描述
在这里插入图片描述

在默认模式下:

  • 10yy:复制10行,再滚至黏贴处,按p粘贴
  • 5dd:删除此后的5行
  • p:复制粘贴当前行代码
  • u:撤回
  • ctrl+r:重做

在输入模式下:

  • ctrl+p:关键字补全
  • ctrl+n:回到起点
#include <stdio.h>

/*struct Student
{
        char *name;
        int age;
        int (*p)(int age);
        struct Student *next;
};*/

struct Test
{
        int data;
        struct Test *next;
};

void printLink(struct Test *head)
{
        struct Test *point;
        point=head;
        while(point != NULL){
                printf("%d ",point->data);
                point=point->next;
        }
        putchar('\n');
}

int getLinkTotalNodeNum(struct Test *head)
{
        int cnt=0;
        while(head != NULL){
                cnt++;
                head=head->next;
        }
        return cnt;
}

int searchLink(struct Test *head,int data)
{
        while(head != NULL){
                if(head->data==data){
                        return 1;
                }
                head=head->next;
        }
        return 0;
}

int main()
{
        int i;
        int array[]={1,2,3};
        for(i=0;i<sizeof(array)/sizeof(array[0]);i++){
                printf("%d ",array[i]);
        }
        putchar('\n');

        struct Test t1={1,NULL};
        struct Test t2={2,NULL};
        struct Test t3={3,NULL};
        struct Test t4={4,NULL};
        struct Test t5={5,NULL};
        struct Test t6={6,NULL};

        t1.next=&t2;
        t2.next=&t3;
        t3.next=&t4;
        t4.next=&t5;
        t5.next=&t6;

        printf("use t1 to print three nums:\n");
//      printf("%d %d %d %d\n",t1.data,t1.next->data,t1.next->next->data,t1.next->next->next->data);
        printLink(&t1);
        int ret=getLinkTotalNodeNum(&t1);
        printf("total num = %d\n",ret);

        ret=searchLink(&t1,2);
        if(ret==1){
                printf("have 2\n");
        }else{
                printf("no 2\n");
        };
        ret=searchLink(&t1,8);
        if(ret==1){
                printf("have 8\n");
        }else{
                printf("no 8\n");
        };

        return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值