单链表的插入伪算法和用C语言创建单链表,并遍历
非循环单链表插入结点伪算法讲解

q插入p之后的伪算法:
第一种表示方法:
r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址
p->pNext = q; // q保存了那一块结点的地址。q是一个指针变量,存放那个结点的地址。
q->pNext = r;
第二种表示方法:
q->pNext = p->pNext; // q的指针域指向p后面一个结点
p->pNext = q; // p的指针域指向q
删除非循环单链表结点伪算法:
把p后面的一个结点删除掉
r = p->pNext;
p->pNext = p->pNext->pNext;
free(r); // 释放内存
链表创建和链表遍历算法的演示:
创建一个单链表,然后遍历。
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h> /*
创建一个单链表,然后遍历。
*/ typedef struct Node
{
int data; // 数据域
struct Node *pNext; // 指针域
}NODE, *PNODE; // NODE等价于struct Node, PNODE等价于struct Node * // 函数声明
PNODE create_list(void);
void traverse_list(PNODE pHead); int main(void)
{
PNODE pHead = NULL; // 等价于 struct Node *pHead = NULL; pHead = create_list(); // 创建一个非循环单链表,并将该链表的头结点的地址赋值给pHead
// 遍历单链表
traverse_list(pHead); return ;
} /*
创建一个非循环单链表,
返回该单链表头节点的地址
*/
PNODE create_list(void)
{
int len; // 用来存放有效结点的个数
int i;
int val; // 用来临时存放用户输入的结点的值 // 分配一个不存放有效数据的头结点
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(pHead == NULL)
{
printf("内存分配失败,程序终止!");
exit(-);
}
// pTail代表尾结点,指针域为NULL
PNODE pTail = pHead;
pTail->pNext = NULL; printf("请输入您需要生成的单链表结点的个数: len =");
scanf("%d", &len); for(i = ;i < len;i++)
{
printf("请输入第%d个结点的值:\n", i + );
scanf("%d", &val); PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(pNew == NULL)
{
printf("内存分配失败,程序终止!");
exit(-);
}
pNew->data = val;
// 把新生成的结点挂到pNext指针域上
// pTail代表最后一个结点,指针域为NULL
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}
// 遍历单链表
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext; // 如果p不为空,表明p已经指向一个结点了,
// 如果p为空,表明单链表为空,指向的是空的头结点
while(p != NULL)
{
printf("%d", p->data);
p = p->pNext; // p往后移
}
}
单链表的插入伪算法和用C语言创建单链表,并遍历的更多相关文章
- 单源最短路径算法——Bellman-ford算法和Dijkstra算法
BellMan-ford算法描述 1.初始化:将除源点外的所有顶点的最短距离估计值 dist[v] ← +∞, dist[s] ←0; 2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V ...
- 七天学会ASP.NET MVC(七)——创建单页应用
系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...
- 七天学会ASP.NET MVC(七)——创建单页应用 【转】
http://www.cnblogs.com/powertoolsteam/p/MVC_Seven.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学 ...
- Spring IOC 容器源码分析 - 创建单例 bean 的过程
1. 简介 在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑.对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去 ...
- 「C语言」单链表/双向链表的建立/遍历/插入/删除
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
- 面试之路(10)-BAT面试之java实现单链表的插入和删除
链表的结构: 链表在空间是不连续的,包括: 数据域(用于存储数据) 指针域(用于存储下一个node的指针) 单项链表的代码实现: 节点类 构造函数 数据域的get,set方法 指针域的get,set方 ...
- 【剑指offer】单链表尾部插入一个节点
#include <iostream> using namespace std; //链表结构体 struct ListNode { int m_Value; ListNode *next ...
- 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】
本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...
- c++利用类进行单链表的插入,删除,清空操作
#if 1 #include <iostream> #include <stdlib.h> #include <time.h> #include <fstre ...
随机推荐
- class __init__()
python 先定义函数才能调用 类是客观对象在人脑中的主观映射,生产对象的模板,类相当于盖房的图纸,生产工具的模具 模板 类:属性.方法 __init__() 这个方法一般用于初始化一个类但是 当实 ...
- Apache htaccess 设置....
NC: no case,就是说不区分大小写R:redirect,重定向F:forbidden,禁止访问L:last,表示已经是最后一条规则,.htaccess文件解析即将退出 比如原地址为 /beau ...
- 多气体组分DEM流动的DMP并行内存错误
今天踩到一个坑.调DEM反应的时候,气体需要设置为多组分,这时就不能用 DES_INTERP_ON = .T. DES_INTERP_SCHEME = 'GARG_2012' 这个差值格式了,否则DM ...
- 洛谷 P4317 花神的数论题(组合数)
题面 luogu 题解 组合数 枚举有多少个\(1\),求出有多少种数 扫描\(n\)的每一位\(1\), 强制选\(0\)然后组合数算一下有多少种方案 Code #include<bits/s ...
- Hibernate Restrictions的运算符
HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrictio ...
- 64位的notepad++没有插件管理
下载的64位的notepad++没有插件管理:需要自己下载这个插件: - plugin manager的下载地址为:https://github.com/bruderstein/nppPluginMa ...
- 洛谷 P2482 loj #2885 [SDOI2010]猪国杀 题解【模拟】【贪心】【搜索】
好玩的模拟题. 以后要经常写模拟题鸭 题目描述 游戏背景 <猪国杀>是一种多猪牌类回合制游戏,一共有\(3\)种角色:主猪,忠猪,反猪.每局游戏主猪有且只有\(1\)只,忠猪和反猪可以有多 ...
- 215 Kth Largest Element in an Array 快排
题目:在无序的数组中找到第k大的元素,也就是若长度为n的数组从小到大排列时,下标为n-k的元素. 注意Example2:第4大的元素是4,也就是数组中出现的两个5分别是第2大和第3大的数字. 解法一: ...
- UVA - 10635 LIS LCS转换
白书例题,元素互不相同通过哈希转换为LIS求LCS #include<iostream> #include<algorithm> #include<cstdio> ...
- Java Web编程
一.二.三有空补 四. Web应用的安全 1. CSS攻击,跨站脚本攻击 跨站脚本,顾名思义,就是恶意攻击者利用网站漏洞往Web页面里插入恶意代码,一般需要以下几个 条件: (1)客户端访问的网站 ...