简单链表插入与遍历

简介: 简单链表插入与遍历

导航


1.定义一个整型指针变量

2.插入n个数的链表,并且进行遍历


——————————————————————————————————————


1.定义一个整型指针变量


#include <cstdio>
#include <cstdlib>
int main()
{
  int *p;    
  p = (int *)malloc(sizeof(int));   //malloc会返回一个void*的地址,这里使用强制转换为int * 
  *p = 4;
  printf("%d",*p);    //输出指针p所指向的内存中的值
  return 0;
}


——————————————————————————————————————


2.执行插入链表,遍历链表

主要步骤:首先创建链表,链表中放入n个数,遍历链表

再插入一个数,再进行遍历链表查看结果


#include <cstdio>
#include <cstdlib>
struct node{
  int data;
  struct node *next;   //定义一个后继指针 
}; 
int main()
{
  int i,n,a;
  struct node *head,*p,*q,*t;
  printf("输入你要插入数的个数:");
  scanf("%d",&n);
  head = NULL; //初始设置头节点为空
  for(i=0;i<n;i++){
  scanf("%d",&a);
  //动态申请一个空间p
  p = (struct node*)malloc(sizeof(struct node));
  p->data = a;
  p->next = NULL;
  if(head == NULL)  //如果头节点为空,则赋给头节点,否则赋值给上一次创建的节点的后继节点 
    head = p;
  else
    q->next = p;
  q = p;     //q用来保存上次p的内存位置 
  } 
  t = head;  //让t的内存位置等于初始头节点的位置
  while(t){
  printf("%d ",t->data);
  t = t->next;
  }  
  printf("\n请输入要插入链表的数:");
  scanf("%d",&a);
  t = head;
  while(t)
  {
  if(t->next->data>a){     //如果当前节点的下一个节点大于输入的a 
    p = (struct node*)malloc(sizeof(struct node));
    p->data = a;
    p->next = t->next;   //首先将t下一个节点的内存地址赋值给新创建的p的下一个地址 
    t->next = p;      //然后再将p赋值给t的下一个节点
    break;  
  }
  t = t->next; 
  }
  t = head;  //让t的内存位置等于初始头节点的位置
  while(t){
  printf("%d ",t->data);
  t = t->next;
  }   
  return 0;
}


运行结果:



相关文章
|
4月前
|
存储
链表的遍历方式
链表的遍历方式
|
5月前
|
存储 算法
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
41 0
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
|
6月前
双链表的插入,删除以及遍历
双链表的插入,删除以及遍历
45 6
链表遍历,链表查找和统计节点,链表插入新节点,链表删除节点,链表修改指定节点,链表头插法,尾插法总结
链表遍历,链表查找和统计节点,链表插入新节点,链表删除节点,链表修改指定节点,链表头插法,尾插法总结
|
6月前
|
算法 Python Java
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
44 0
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
|
6月前
|
算法 Java C++
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
61 0
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
|
6月前
|
Go Java C++
Java每日一练(20230409) 多数元素、反转链表 II 、日期之间的遍历
Java每日一练(20230409) 多数元素、反转链表 II 、日期之间的遍历
50 0
Java每日一练(20230409) 多数元素、反转链表 II 、日期之间的遍历
|
11月前
|
C++
数据结构循环链表之循环链表遍历 | 第三套
数据结构循环链表之循环链表遍历 | 第三套
37 0
|
存储 C++
链表操作:插入、删除与遍历
(笔者画图不易呜呜)链表是一种基本的数据结构,它可以用来存储一系列的元素,并且支持灵活的插入、删除操作。在计算机科学中,链表常常用于构建更复杂的数据结构,如栈、队列以及图等。
303 0
|
Java
java数据结构20:Big Bang(链表的插入、删除、遍历和查找)
学习累了的时候看看一集二十分钟左右的《生活大爆炸》也不失为一种乐趣。在剧中Sheldon可以说是一个极品,真不知Leonard是如何忍受这位极品室友成天的唠叨。
95 0