前言

今天整理资料的时候翻出来的文件,发现是以前学习数据结构的时候写的代码,当初是看郝凯老师的视频学习的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:单链表的简单实现的更多相关文章

  1. 侵入式单链表的简单实现(cont)

    前一节介绍的侵入式链表实现在封装性方面做得不好,因为会让消费者foo.c直接使用宏container_of().这一节对list的定义做了一点改进,如下所示: typedef struct list_ ...

  2. 单链表数据结构 - java简单实现

    链表中最简单的一种是单向链表,每个元素包含两个域,值域和指针域,我们把这样的元素称之为节点.每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值.如图就是一个单向链表 一个单向链 ...

  3. 用最简单的方式学Python单链表

    Python 实现单链表 在本博客中,我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如Python列表). 基于数组的序列和链表都能够对其中的元素保持一定得顺序,但采用的方式 ...

  4. C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)

    昨天周末给学妹讲了一些指针的知识,本来我对指针就是似懂非懂的状态,经过昨天一讲,我对指针的学习就更深刻了 果然给别人讲课也是学习的一个方法.加上最近复习数据结构,发现我的博客里没有链表的博文,所以趁这 ...

  5. 数据结构(一) 单链表的实现-JAVA

    数据结构还是很重要的,就算不是那种很牛逼的,但起码得知道基础的东西,这一系列就算是复习一下以前学过的数据结构和填补自己在这一块的知识的空缺.加油.珍惜校园中自由学习的时光.按照链表.栈.队列.排序.数 ...

  6. java 单链表 练习

    练习一下java单链表的简单习题 package com.test1; import java.util.Stack; public class SingleListDemo { /** * 返回单链 ...

  7. 用最容易的方式学会单链表(Python实现)

    单链表与数组 在本博客中,我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如Python列表). 基于数组的序列也会有如下缺点: 一个动态数组的长度可能超过实际存储数组元素所需 ...

  8. C++实现简单的单链表

    下面实现的是一个简单的单链表 功能不多,学习使用 #pragma once #include <iostream> using namespace std; class ListEx { ...

  9. 简单约瑟夫环的循环单链表实现(C++)

    刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...

随机推荐

  1. adb命令查看手机应用内存使用情况

    adb shell回车 一.procrank VSS >= RSS >= PSS >= USSVSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)是单个 ...

  2. SSH proxycommand 不在同一局域网的机器ssh直连

    本地和192.168.1.10不在同一个网络,可以通过jumpserver跳转过去,操作如下 选项 -L 本机端口 -f 后台启用,可以在本机直接执行命令,无需另开新终端 -N 不打开远程shell, ...

  3. Java中常量的概念

    常量:在程序执行过程中,其值不发生改变的量.分类:A:字面值常量B:自定义常量字面值常量A:字符串常量(用“”括起来的内容).举例:"hello"B:整数常量 (所有的整数)举例: ...

  4. tensorflow1.0 队列FIFOQueue管理实现异步读取训练

    import tensorflow as tf #模拟异步子线程 存入样本, 主线程 读取样本 # 1. 定义一个队列,1000 Q = tf.FIFOQueue(1000,tf.float32) # ...

  5. Cannot find libcrypto in Ubuntu

    https://stackoverflow.com/questions/13811889/cannot-find-libcrypto-in-ubuntu sudo apt-get install li ...

  6. awk和sed命令

    awk awk是一个强大的编辑工具,可以在无交互的情况下实现相当复杂的文本操作 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 a ...

  7. KVM 一键批量创建虚拟机

    目录 一.原理 二.基础镜像 2.1.创建基础镜像 2.2. 完善基础镜像 2.3.基础镜像设置权限 3.4 设置 title 3.5.基础镜像XML 三.批量创建机器脚本 四.挂载磁盘多种方式 4. ...

  8. 好程序员分享Web前端面试题汇总JS篇之跨域问题

    为什么80%的码农都做不了架构师?>>>   好程序员分享Web前端面试题汇总JS篇之跨域问题,接着上一篇文章我们继续来探讨web前端面试必备面试题. 跨域解决方案 1. 通过jso ...

  9. 让webpack打包支持ES7的async/await语法

    npm install --save-dev babel-plugin-transform-runtime npm install --save babel-runtime .babelrc配置 { ...

  10. 酷狗音乐快速转换MP3格式的方法

    喜欢听音乐的朋友们,散步跑步的时候都是随身听,音乐可以给人带来力量,让人心情愉悦,有时候甚至还可以让我们忘记烦恼和忧愁,是一种不错的解压方式,所以热爱运动的宝宝们是离不来音乐的陪伴的,这样说来随身听的 ...