c语言-单链表(二)
继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点
1.链表的判断是否为空
//1.判断链表是否为空
bool isempty_list(PNODE pHead) {
return pHead->pNext == NULL;
}
2. 计算链表的长度
//2.链表长度
int length_list(PNODE pHead) {
PNODE pFirst = pHead->pNext;//获取头结点
int num = 0;
while (pFirst != NULL)
{
num++;
pFirst = pFirst->pNext;
}
return num;
}
3. 在制定位置增加节点
//指索引位置插入节点
bool insert_list(PNODE pHead, int pos, int data) {
PNODE p = pHead;//头结点
int i = 0;
while (p != NULL&&i <= pos)
{
p = p->pNext;
i++;
}
//pos 是索引位置,循环i不能>pos+1
if (p == NULL || i > (pos + 1))
{
return false;
}
PNODE pNew = (PNODE)malloc(sizeof(PNODE));
if (NULL == pNew)
{
printf("内存分配失败");
exit(-1);
}
pNew->data = data;
pNew->pNext = p->pNext; int pVal = p->data;
p->pNext = pNew; return true;
}
4. 在指定位置删除节点
bool delete_list(PNODE pHead, int pos) {
PNODE p = pHead->pNext;
int i = 0;
//这样循环为了获取pos 前面一个节点
while (NULL != p&&i < pos - 1)
{
p = p->pNext;
i++;
}
if (NULL == p || i > pos - 1)
{
return false;
}
PNODE q = p->pNext;
p->pNext = p->pNext->pNext;
free(q);
q = NULL;
return true;
}
5.节点的排序
//排序算法
void sort_list(PNODE pHead) {
int len = length_list(pHead);
PNODE p, q;
int i, j, temp;
for (i = 0, p = pHead->pNext; i < len - 1; i++, p = p->pNext)
{
for (j = i + 1, q = p->pNext; j < len; j++, q = q->pNext)
{
if (p->data > q->data)
{
temp = p->data;
p->data = q->data;
q->data = temp;
}
}
}
return;
}
6. 测试代码
void main(void) {
PNODE pHead = create_list();
if (isempty_list(pHead)) {
printf("链表为空\n");
}
else {
printf("链表不为空\n");
}
bool is_insert=insert_list(pHead, 2, 100);
if (is_insert)
{
printf("链表在索引2出插入100 成功\n");
show_list(pHead);
}
else {
printf("链表在索引2出插入100 失败\n");
}
printf("删除节点索引:1\n");
bool is_del=delete_list(pHead, 1);
if (is_del)
{
printf("删除节点索引:1 成功\n");
show_list(pHead);
}
else {
printf("删除节点索引:1 失败\n");
}
}

c语言-单链表(二)的更多相关文章
- C语言单链表实现19个功能完全详解
谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...
- C语言—单链表
单链表操作:读取,插入和删除 #include "stdafx.h" #include <string.h> #include <stdio.h> #inc ...
- C语言——单链表初始化、求表长、读表元素、插入元素
头文件Linear.h // 单链表的类型定义 typedef struct node { int data; // 数据域 struct node *next; // 指针域 }Node, *Lin ...
- c语言单链表实现
/************************************************************************* > File Name: singleLin ...
- C语言单链表的实现
// // main.c // gfhjhgdf // // Created by chenhao on 13-12-23. // Copyright (c) 2013年 chenhao. A ...
- c语言-单链表(一)
定义节点: typedef struct Node { int data; Node* pNext; }NODE, *PNODE; 细节说明,PNode 就代表struct Node* ,上面的表单是 ...
- 零基础玩转C语言单链表
下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 n ...
- c语言——单链表分拆——头插法创建链表,尾插法生成链表
#if 1 #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; ...
- C语言单链表简单实现(简单程序复杂化)
PS: goto还是很好玩的. #include <stdio.h> #include <stdlib.h> typedef struct _node{ int value; ...
随机推荐
- java深入探究12-框架整合
1.Spring与Hibernate整合 需要配置的就是hibernate和bean.xml 1)关键点:sessionFactory创建交给SpringIOC:session的事务处理交给Sprin ...
- LeetCode——Construct Binary Tree from Inorder and Postorder Traversal
Question Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may a ...
- c#.NET中日志信息写入Windows日志中解决方案
1. 目的应用系统的开发和维护离不开日志系统,选择一个功能强大的日志系统解决方案是应用系统开发过程中很重要的一部分.在.net环境下的日志系统解决方案有许多种,log4net是其中的佼佼者.在Wind ...
- ZooKeeper服务-操作(API、集合更新、观察者、ACL)
操作 create:创建一个znode(必须要有父节点)delete:删除一个znode(该znode不能有任何子节点)exists:测试一个znode是否存在并且查询它的元数据getACL,setA ...
- mssql 函数STUFF 的用法
DECLARE @limitDay INT;SET @limitDay = 92;IF DATEDIFF(DAY, '2017-12-13 00:00:00', '2017-12-13 18:00:0 ...
- shutdown TCP 端口445
一. 协议:TCP 端口:445 二. shutdown /m \\192.168.1.15 -s -t 60 net use \\192.168.1.15\ipc$ 密码 /user:账户 三. g ...
- rapidjson代码封装类
rapidjson代码封装类 以下代码封装了rapidjson增删改查等基本操作: /********************************************************* ...
- Windods7+Anaconda+Tensorflow安装步骤
1.下载及安装Anaconda Anaconda是python科学计算的集成.下载Anaconda,下载地址:http://continuum.io/downloads. 由于tensorflow目前 ...
- img标签显示本地文件
html: <img src="__IMG__/male.png" id="imgfpic1" style="height: 100%; wid ...
- java: i18n语言
<%@ page language="java" contentType="text/html; charset=utf8"%> <%@ pa ...