前言

今天整理资料的时候翻出来的文件,发现是以前学习数据结构的时候写的代码,当初是看郝凯老师的视频学习的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. Roles on a Machine Learning Project (机器学习项目中的角色)

    原文 :https://medium.com/machine-learning-in-practice/roles-on-a-machine-learning-project-216903a6dc12 ...

  2. 【mybatis xml】数据层框架应用--Mybatis 基于XML映射文件实现数据的CRUD

    使用MyBatis框架进行持久层开发 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索. MyBa ...

  3. pytorch-API实现线性回归

    示例: import torch import torch.nn as nn from torch import optim class MyModel(nn.Module): def __init_ ...

  4. 教你如何快速让浏览器兼容es6

    写在正文前,本来这一节的内容应该放在第二节更合适,因为当时就有同学问ES6的兼容性如何,如何在浏览器兼容ES6的特性,这节会介绍一个抱砖引玉的操作案例. 为什么ES6会有兼容性问题? 由于广大用户使用 ...

  5. elementaryos5安装chrome,修复依赖

    1.首先去下载个chrome:https://www.google.cn/chrome/ 2.尝试安装chrome:sudo dpkg -i google-chrome-stable_current_ ...

  6. 《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.4 双路组相联高速缓存...

    本节书摘来自异步社区<现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)>一书中的第2章,第2.4节,作者:[美]Curt Schimmel著,更多章节内容可以访问云 ...

  7. 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)

    这里还有数据库相关的优质文章:快戳我,快戳我

  8. CodeForces - 1176A Divide it! (模拟+分类处理)

    You are given an integer nn. You can perform any of the following operations with this number an arb ...

  9. 嵌入式Linux学习笔记(三) 字符型设备驱动--LED的驱动开发

    在成功构建了一个能够运行在开发板平台的系统后,下一步就要正式开始应用的开发(这里前提是有一定的C语言基础,对ARM体系的软/硬件,这部分有疑问可能要参考其它教程),根据需求仔细分解任务,可以发现包含的 ...

  10. UVA352 The Seasonal War

    本文为UserUnknown原创 题目本身不难理解,就是深搜(或广搜,有可能以后会加在这里). 但是洛谷的题目中没有截到输入输出的格式,下面是我从UVA复制下来的样例: Sample input 6 ...