C:单链表的简单实现
前言
今天整理资料的时候翻出来的文件,发现是以前学习数据结构的时候写的代码,当初是看郝凯老师的视频学习的C语言的数据结构,下面是对于一个单链表的简单的实现。
/**
****************************************************************************
*@file SingleLinker.c
*@version V1.00
*@brief
*@date 2015/11/24
*****************************************************************************
*/
#include <stdio.h>
#include <malloc.h>
typedef struct Node{
int data;
struct Node *pNext;
}NODE,*pNODE;
pNODE CreateList(void);
void TraveList(pNODE pHead);
void InsertNode(pNODE pHead);
void DeleteNode(pNODE pHead);
void SearchNode(pNODE pHead);
int main(void)
{
char Temp = '0';
pNODE pHead;
pHead = (pNODE)malloc(sizeof(NODE));
if(pHead == NULL){
printf("Fail to set memory\n");
}
pHead = CreateList();
printf("If you want show the list? y/n? \n");
while('Y' == getchar() || 'y' == getchar()){
TraveList(pHead);
}
InsertNode(pHead);
TraveList(pHead);
DeleteNode(pHead);
TraveList(pHead);
SearchNode(pHead);
printf("Test Linker\n");
return;
}
/**
****************************************************************************
* @brief CreateList
* @param none
* @return pNODE
* @note
*****************************************************************************
*/
pNODE CreateList(void)
{
int len;
int val;
int i;
pNODE pHead = NULL;
pNODE pTemp;
pHead = (pNODE)malloc(sizeof(NODE));
if(pHead == NULL){
printf("Fail to set memory\n");
return;
}
pTemp = pHead;
pTemp->pNext = NULL;
printf("Please input length of the list\n");
scanf("%d",&len);
pHead->data = len;
for(i=1; i<=len; i++){
printf("Please input the %dth value\n",i);
scanf("%d",&val);
pNODE pNEW = (pNODE)malloc(sizeof(NODE));
if(pNEW == NULL){
printf("Fail to set memory\n");
return;
}
pNEW->data = val;
pTemp->pNext = pNEW;
pNEW->pNext = NULL;
pTemp = pNEW;
}
return pHead;
}
/**
****************************************************************************
* @brief TraveList
* @param [in]pHead
* @return none
* @note
*****************************************************************************
*/
void TraveList(pNODE pHead)
{
int i = 0;
pNODE pTemp = pHead->pNext;
while(pTemp != NULL){
i++;
printf("the %dth Value is:%d\n",i,pTemp->data);
pTemp = pTemp->pNext;
}
return;
}
/**
****************************************************************************
* @brief InsertNode
* @param [in]pPostion
* @param [in]value
* @return none
* @note
*****************************************************************************
*/
void InsertNode(pNODE pHead)
{
int i,n,val;
pNODE pTemp = pHead;
printf("Which node do you want to insert?1~%d \n",pHead->data);
scanf("%d",&n);
if(n > pHead->data){
printf("The number is over range\n");
return;
}
printf("Please input the value\n");
scanf("%d",&val);
for(i=0; i<n; i++){
pTemp = pTemp->pNext;
}
pNODE pInsert = (pNODE)malloc(sizeof(NODE));
if(pInsert == NULL){
printf("Fail to set memory\n");
return;
}
pHead->data +=1;
pInsert->data = val;
pInsert->pNext = pTemp->pNext;
pTemp->pNext = pInsert;
return;
}
/**
****************************************************************************
* @brief DeleteNode
* @param [in]pHead
* @return none
* @note
*****************************************************************************
*/
void DeleteNode(pNODE pHead)
{
int i,n,val;
pNODE pTemp = pHead;
pNODE pDel = pTemp->pNext;
printf("Which node do you want to delete?1~%d \n",pHead->data);
scanf("%d",&n);
if(n > pHead->data){
printf("The number is over range\n");
return;
}
for(i=0; i<n-1; i++)
{
pTemp = pTemp->pNext;
pDel = pDel->pNext;
}
pHead->data -=1;
pTemp->pNext = pDel->pNext;
}
/**
****************************************************************************
* @brief SearchNode
* @param[in] pHead
* @return none
* @note
*****************************************************************************
*/
void SearchNode(pNODE pHead)
{
int i,n;
pNODE pTemp = pHead;
printf("Which node do you want to Search?1~%d \n",pHead->data);
scanf("%d",&n);
if(n > pHead->data){
printf("The number is over range\n");
return;
}
for(i=0; i<n; i++)
{
pTemp = pTemp->pNext;
}
printf("Value of the NODE is %d\n",pTemp->data);
}
C:单链表的简单实现的更多相关文章
- 侵入式单链表的简单实现(cont)
前一节介绍的侵入式链表实现在封装性方面做得不好,因为会让消费者foo.c直接使用宏container_of().这一节对list的定义做了一点改进,如下所示: typedef struct list_ ...
- 单链表数据结构 - java简单实现
链表中最简单的一种是单向链表,每个元素包含两个域,值域和指针域,我们把这样的元素称之为节点.每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值.如图就是一个单向链表 一个单向链 ...
- 用最简单的方式学Python单链表
Python 实现单链表 在本博客中,我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如Python列表). 基于数组的序列和链表都能够对其中的元素保持一定得顺序,但采用的方式 ...
- C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)
昨天周末给学妹讲了一些指针的知识,本来我对指针就是似懂非懂的状态,经过昨天一讲,我对指针的学习就更深刻了 果然给别人讲课也是学习的一个方法.加上最近复习数据结构,发现我的博客里没有链表的博文,所以趁这 ...
- 数据结构(一) 单链表的实现-JAVA
数据结构还是很重要的,就算不是那种很牛逼的,但起码得知道基础的东西,这一系列就算是复习一下以前学过的数据结构和填补自己在这一块的知识的空缺.加油.珍惜校园中自由学习的时光.按照链表.栈.队列.排序.数 ...
- java 单链表 练习
练习一下java单链表的简单习题 package com.test1; import java.util.Stack; public class SingleListDemo { /** * 返回单链 ...
- 用最容易的方式学会单链表(Python实现)
单链表与数组 在本博客中,我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如Python列表). 基于数组的序列也会有如下缺点: 一个动态数组的长度可能超过实际存储数组元素所需 ...
- C++实现简单的单链表
下面实现的是一个简单的单链表 功能不多,学习使用 #pragma once #include <iostream> using namespace std; class ListEx { ...
- 简单约瑟夫环的循环单链表实现(C++)
刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...
随机推荐
- Bi-shoe and Phi-shoe LightOJ - 1370
欧拉函数. 欧拉函数打表模板: #define maxn 3000010 int p[maxn]; void oula(){ int i,j; ; i<=maxn; i++) p[i]=i; ; ...
- 利用Putty建立SSH的tunnels访问内网资源
适用场景访问阿里或者腾讯云只针对内网开放的资源. 本文以SQLSERVER 举例 举例你的内网 SQLSERVER的访问地址是192.168.33.88 . 你的Microsoft SQL Serve ...
- ASP.NET Core技术研究-全面认识Web服务器Kestrel
因为IIS不支持跨平台的原因,我们在升级到ASP.NET Core后,会接触到一个新的Web服务器Kestrel.相信大家刚接触这个Kestrel时,会有各种各样的疑问. 今天我们全面认识一下ASP. ...
- orcale 树形结构查询
接到需求是要在一个表中(表结构为主键id和父id)循环显示数据,类似于省市县++这种情况 也可能不只有三级子菜单 id name parentid 1 a 0 2 ...
- 14个快捷键让你的idea飞起来(新手向 + 演示)
本期盘点一下博主在工作中,常用的13个idea快捷键,这些快捷键基本涵盖了大部分的开发场景,希望可以萌新们的idea使用效率,系统为mac系统 上一步 / 下一步撤销 / 反撤销进入一个类生成方法变量 ...
- tp5.1 依赖注入的使用
参考:概念:https://blog.csdn.net/qq_36172443/article/details/82667427应用: http://www.cnblogs.com/finalandd ...
- Kubernetes 命令行工具之kubctl
目录 1.何为kubectl 2.Kubectl基本使用 2.1.命令补全 2.2.快速查找资源 2.3.使用自定义输出格式 3.陈述式管理资源 3.1.管理namespace资源 3.2.管理Dep ...
- thymeleaf 模板语法
模板语法 如何在 script 标签体内部使用 th 获取后端数据 添加如下属性 <script type="text/javascript" th:inline=" ...
- java关于throw Exception的一个小秘密
目录 简介 throw小诀窍 总结 java关于throw Exception的一个小秘密 简介 之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unche ...
- LaTex中文article模板(支持代码、数学、TikZ)
代码 请使用XeLatex编译 main.tex \documentclass{article} \usepackage{ctex} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...