指针与数据结构算法_链表(C语言)

一.变量:

声明一个变量系统是没有给这个变量分配内存空间的:

例:

int j;//编译的时候是没有分配内存空间的
int i=3;//计算机在编译的时候就会给这个i分配4个字节的内存空间

二.malloc动态分配内存地址:

回想一下:我们在程序中存储一个整数10;除了使用int a;在内存中申请一块区域来存储,还有一种方法:

malloc(4);                    //从内存中申请4个字节大小的内存存放整数10

在C中经常看到这样的写法:

(int *)malloc(sizeof(int));  //sizeof(获取int类型所占的字节数)

//(int *)表示申请的这些字节数用于存放int类型的整数

例:

#include <stdio.h>
#include <stdlib.h>
 int main()
 {
     int b;
     b=(int)malloc(sizeof(int));  //没有这句话,变量b 是不占内存的,printf输出就会空指针异常;有这句话,就输出的申               请的内存地址
     printf("%d",b);
     system("pause");
     return 0;
 }

三.C中的*和&:

*:代表取内存中的值(*还有乘法运算,这个就不多解释了)

&: 代表获取的是变量的地址

**:二级指针(就是地址里面存放第三个变量的地址地址)

->:结构体指针运算符(用于访问结构体内部成员的)

例(二级指针的例子):

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[]={1,2,3,4,5};//这个数组里存入的是具体的数据
    int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};//这个数组里面就是全部存的数内存地址,并不是数据
    int **p,i;
    p=num;
    for (i = 0; i < 5; i++)//注意这里,C语言是不能在这里进行变量的定义的如:int i
    {
        printf("%d\t",**p);//这里的p表示num数组的首地址,*p表示num[1]的值,也就是a[0]的地址,**p就是值了
        p++;//指针向下移一格
    }
    system("parse");
    return 0;
}

四.链表(遍历):

根据以上知识点,就可以进行简单的链表的遍历了

例:

#include <stdio.h>
#include <stdlib.h>
 struct note
 {
     int data;
     struct note *next;
 };
int main()
 {
     struct note *head,*p,*q,*t;//
     int i,n,a;
     scanf("%d",&n);//有多少个数
     head=NULL;//头指针初始化为空
     for (i = 0; i < n; i++)//循环读取n个数
     {
         scanf("%d",&a);
         p=(struct note *)malloc(sizeof(struct note));//动态申请一个节点的空间,存放节点
         p->data=a;//将数据存入data中
         p->next=NULL;//设置当前指针的后续指针指向空
         if(head==NULL)
         {
             head=p;//如果这是第一个创建的节点,就让头指针指向这个
         }
         else
         {
             q->next=p;//如果不是第一个节点,就让前一个的后续指针指向当前节点
         }
         q=p;//在将q也指向当前节点
     }
     t=head;
     while (t!=NULL)
     {
         printf("%d\t",*t);
         t=t->next;   //继续下一个节点
     }
     system("pause");     return 0;
 }

五.后记:

以上只是对链表进行了遍历,链表数据的添加删除,后续继续更新

时间: 2024-10-17 02:48:28

指针与数据结构算法_链表(C语言)的相关文章

经典算法_链表

1 创建一个链表,包含在尾部插入数据和输出的函数. 头文件linknode.h 源文件 源文件main.c 源文件linknode.c 2 创建一个链表,静态模式 3 创建一个链表,动态模式 1 创建一个链表,包含在尾部插入数据和输出的函数. 头文件linknode.h 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct student 5 { 6 int num; 7 float score; 8 struct studen

数据结构线性表链表的C语言实现

                                                                                      数据结构线性表链表的C语言实现      说明:线性表是一种最简单的线性结构,也是最基本的一种线性结构,所以它不仅是学习中的重点,也是应用开发非常常用的一种数据结构.它可以分为顺序表和链表.它的主要操作是数据元素的插入,删除,以及排序等.接下来,本篇文章将对线性表链表的基本操作和运用进行详细的说明(包含在源代码的注释中),并给

Java数据结构和算法之链表

三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中都包含一个对下一个点引用的字段(通常叫做next)但是本身的对象中有一个字段指向对第一个链结点的引用. 单链表 用一组地址任意的存储单元存放线性表中的数据元素. 以元素(数据元素的映象)  + 指针(指示后继元素存储位置)  = 结点(表示数据元素 或 数据元素的映象) 以"结点的序列&q

算法实例_链表结构 By:比方

前一章,我们说到了顺序表结构,而顺序表也存在一些的缺点. 在插入或者删除节点的时候,需要移动的数据比较大,如果顺序表结构比较大,有时候比较难以分配足够的连续存储空间,可能会导致内存分配失败,而导致无法存储. 而今天我们讲解的链表结构则可以很好的解决这个问题,链表的结构是一种动态存储分配的结构形式,可以根据需要动态申请所需的内存单元. 一.什么是链表结构? a)         我们用head来表示头节点. b)         数据部分保存的是存储的数据,地址地方指向下一个数据的起始部分,依次向

算法与数据结构(二):链表

上一篇简单的开了一个头,简单介绍了一下所谓的时间复杂度与空间复杂度,从这篇开始将陆陆续续写一下常用的数据结构:链表.队列.栈.树等等. 链表当初是我在学校时唯一死磕过的数据结构,那个时候自己还算是一个好学生,虽然上课没怎么听懂,但是课后还是根据仔细调试过老师给的代码,硬是自己给弄懂了,它是我离校时唯一能够写出实现的数据结构,现在回想起来应该是它比较简单,算法也比较直来直去吧.虽然它比较简单,很多朋友也都会链表.但是作为一个系列,如果仅仅因为它比较简单而不去理会,总觉得少了点什么,所以再这仍然将其

数据结构之_单链表的实现

数据结构之_单链表的实现 1.基本概念 链式存储定义 为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息. 单链表 线性表的链式存储结构中,每个节点中只包含一个指针域,这样的链表叫单链表. 通过每个节点的指针域将线性表的数据元素按其逻辑次序链接在一起(如图). 概念解释: 表头结点 链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息 数据结点 链表中代表数据元素的结点,包含指向下一个数据元素的指针和数据元素的信息

《数据结构与算法分析:C语言描述》复习——第十章“算法设计技巧”——Alpha-Beta剪枝

2014.07.08 22:43 简介: “搜索”与“剪枝”几乎是如影随形的.此处的“搜索”指的是带有回溯算法的深度优先搜索. 在之前的“Minimax策略”中我们给出了一个三连棋的程序,运行后你就知道计算一步棋要花多少时间. 为了计算最优的一步棋,我们可能需要递归9万多次.如果毫无疑问这种阶乘式的穷举过程必须通过剪枝来加速. 本篇介绍一种用于Minimax策略的剪枝思路——α-β剪枝. 剪枝的英语是pruning,所以不要想当然说成trimming. 图示: 在上一篇讲解Minimax策略的博

数据结构之链表C语言实现以及使用场景分析

牢骚:本篇博客两个星期前已经存为草稿,鉴于发生一些糟糕的事情,今天才基本完成.本人6月份应届毕业生一枚,毕业后当天来到帝都,之后也非常顺利,面试了俩家公司都成功了.一家做C++方面电商ERP,一家做wifi模块,觉得第二家公司小,薪资低,但是觉得好玩就去了.同时,在学校也喝了不少鸡汤,觉得公司小怎么了.然而去了不到20天,公司被深圳一家公司收购了,公司动员我去深圳,我尼玛我才来20多天啊,有木有?而且感觉公司做这么大的决定都是随时拍板的吗? 原本以为一个公司的生命力强到可以忽略的概率,然而当自己

C语言版数据结构算法

C语言版数据结构算法 C语言数据结构具体算法 https://pan.baidu.com/s/19oLoEVqV1I4UxW7D7SlwnQ C语言数据结构演示软件 https://pan.baidu.com/s/1u8YW897MjJkoOfsbHuadFQ 在上一篇的FIFO中就是基于数据结构思维中的队列实现的,而基本的数据结构内容还有 算法效率分析.线性表.栈和队列.串.数组和广义表.树和二叉树.图.查表.排序.动态存储管理 上面两个链接就是<数据结构(C语言版)>严蔚敏教授严奶奶的书籍