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

链表全解析(C语言)

10人参与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

Java 操作Word书签(三):用文本、图片、表格替换书签

08-28

POJ1286 Necklace of Beads(Polya定理)

07-11

Cef3 学习资料

06-11

c语言宏

10-27

C语言实现蛇形输出

10-12

TSL1401线性CCD TM32F103开发平台移植源代码

06-02

C语言实现CRC32算法

10-08

C++输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数 把第二个输入的整数输出

04-21

一起talk C栗子吧(第一百七十四回:C语言实例--关闭终端中的缓冲功能二)

10-15

最近更新

C语言输入单字符避免回车的四种方法

09-15

QRowTable表格控件(五)-重写表头排序、支持第三次单击恢复默认排序

09-15

洛谷 P3958 奶酪

09-15

引用的本质分析

09-15

致初学者(一): HDU 2000~ 2013题解

09-15

C++实现单例

09-15

函数默认参数与占位参数

09-15

new/delete与命名空间

09-15

C++中的强制类型转换

09-15

致初学者(二): HDU 2014~ 2032题解

09-15

网友评论

已有0条评论