IT编程 > 开发语言 > C/C++

链表全解析(C语言)

40人参与2019-09-11

一、链表中结点的存储

       链表的结点左边一部分是存放的数据,右边一部分是后继指针指向下一个结点的地址。c语言中通常定义一个结构体类型来存储一个结点,如下:

struct node
{
    int data;
    struce node *next; //下一个结点的类型也是struct node,所以后继指针的类型也必须是struct node *
};

二、让我们把结点连起来吧

       想要把结点一个个串起来,还需要三个struct node *类型的指针:head(头指针,指向链表的开始,方便从头遍历整个链表)、p(临时指针,指向那些还未连接的结点)、q(当前指针,指向当前最新串入的结点)。

  当链表还没有建立时,头指针head为空。

struct node *head;
head=null;  //头指针初始为空

  现在我们来创建第一个结点,并用临时指针p指向这个结点。

struct node *p;
p=(struct node *)malloc(sizeof(struct node));  //为新结点动态申请一个空间,并用临时结点p指向这个新地址
scanf("%d",&a);  //读取数据
p->data=a; //将数据存储到当前结点的data域中
p->next=null;  //设置当前结点的后继指针指向空,也就是当前结点的下一个结点为空

  把新加入的结点串进链表。如果该结点是创建的第一个结点,则将头指针指向这个结点再将当前指针指向这个结点;如果该结点不是第一个,则将上一个结点的后继指针指向该结点再修改当前指针指向这个新结点。

if(head==null)
    head=p;
else
    q->next=p;
q=p; //最后指针q也指向当前结点

三、建立链表并遍历输出的完整代码

 

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int data;
    struct node *next;
 };
 int main()
 {
     struct node *head,*p,*q,*t;
     int i,n,a;
     scanf("%d",&n);
     head=null;
     for(i=0;i<n;i++){
         p=(struct node *)malloc(sizeof(struct node));
         scanf("%d",&a);
         p->data=a;
         p->next=null;
         if(head==null)
             head=p;
         else
             q->next=p;
         q=p;
     }
     //输出链表
     t=head;
      while(t!=null){
          printf("%d ",t->data);
          t=t->next;
      }
      return 0;
 }

 

 

四、插入结点

 

您希望与广大热心网友互动!!点此进行留言回复

相关推荐

链表全解析(C语言)

09-11

C++ string的用法和例子

05-12

printf()函数详细了解

01-27

二次剩余Cipolla算法学习笔记

03-28

铺地毯(取最上层的地毯)

10-17

[CERC2017] Intrinsic Interval

03-21

一起talk C栗子吧(第一百零八回:C语言实例--线程创建与结束一)

10-19

平衡二叉树(Balanced Binary Tree&#160;或&#160;Height-Balanced Tree)又称AVL树

08-15

在C++的函数中如何指定一个数组,使得这个数组的大小由函数的输入值来决定

07-01

将含有makefile文件的源码加入Eclipse工程

04-29

最近更新

凉肝的比赛

01-18

单链表实现

01-17

STM32之GPIO底层原理与编程实践

01-16

【编程技巧】如何使用带参数的宏 &amp;&amp; 常用的带参数宏

01-16

寒假集训第一天---并查集题解

01-16

c语言数组与指针详解(上)

01-15

01 Windows安装C语言环境

01-15

InsertionSort(插入排序)原理及C++代码实现

01-15

MergeSort(归并排序)原理及C++代码实现

01-15

CountingSort(计数排序)原理及C++代码实现

01-15

网友评论

已有0条评论