前言

今天整理资料的时候翻出来的文件,发现是以前学习数据结构的时候写的代码,当初是看郝凯老师的视频学习的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. 如何用python批量生成真实的手机号码

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Python测试社区 1目 标 场 景 平时在工作过程中,偶尔会需要大 ...

  2. python脚本如何同时运行多个

    当我们想一次运行多个py脚本的时候你想到了什么应用场景了吗?当你想同时并行的处理一些对象时你有什么好方法吗?下面我就简单的总结一些这方面的小技巧,方便大家根据情况灵活处理. 1 用一个py脚本运行多个 ...

  3. L8梯度消失、梯度爆炸

    houseprices数据下载: 链接:https://pan.baidu.com/s/1-szkkAALzzJJmCLlJ1aXGQ 提取码:9n9k 梯度消失.梯度爆炸以及Kaggle房价预测 代 ...

  4. Spring Cloud 系列之 Gateway 服务网关(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一) 本篇文章讲解 Gateway 网关的多种路由规则.动态路由规则(配合服务发现的路由规则 ...

  5. 6.表单提交,input键盘变搜索,有关自定义属性input操作

    1.键盘变搜索 1.) 在form 上加action="#", 2.)input type=search, 3.)此时会提交到 #,需要再添加一个input display=non ...

  6. 容易忽略的CSS3属性

    flex布局模型 1. flex-direction: row |  row-reverse | column | column-reverse flex-direction 属性决定主轴的方向(即项 ...

  7. 三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)

    作者:gauseen 原文:https://github.com/gauseen/blog 公众号:「学前端」,只搞技术不搞广告文,欢迎关注~ 第一次 20:00 电话一面 - 自我介绍 - 对公司工 ...

  8. php静态变量的销毁

    什么都不说,先上代码: public function _childrenids($data,$cate_id,$clear=false) { static $arr = array(); if ($ ...

  9. POJ2044 天气预报---状态细则

    墙角数枝梅,凌寒独自开. 遥知不是雪,为有暗香来.--王安石 题目:天气预报 网址:http://poj.org/problem?id=2044 你是一个可以控制降雨的神仙. 你是一个仁慈的神,希望土 ...

  10. zabbix监控ftp

    [root@agent ~]# yum -y install vsftpd [root@agent ~]# systemctl start vsftpd[root@agent ~]# systemct ...