链表基础

74 阅读1分钟

1.链表和数组的区别

2.链表的实现

链表中每个节点的具体实现,需要使用 C 语言中的结构体,具体实现代码为:

typedef struct Link{    
    char elem; //代表数据域    
    struct Link * next; //代表指针域,指向直接后继元素
}link; //link为节点名,每个节点都是一个 link 结构体

由于指针域中的指针要指向的也是一个节点,因此要声明为 Link 类型(这里要写成 struct Link* 的形式)。

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

image.png

编译失败时在后面加上 -std=c99

#include <stdio.h>
struct Test{
        int data;
        struct Test *next;
};	

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

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

        t1.next=&t2;
        t2.next=&t3;

        printf("%d%d%d\n",t1.data,t1.next->data,t1.next->next->data);
}

1.注意NULL是大写

2.变量用点函数,t1.data

3.指针用箭头函数,t1.next->data

4.链表遍历中的point=point→next

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

6.链表从指定节点后方插入新节点

7.链表从指定节点前方插入新节点

8.链表删除指定节点

9.链表动态创建之头插法

10.尾插法

11.总结