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.. ...
随机推荐
- Maven 命令深度理解
1.前言 Maven 命令看起来简单,一学即会 .其实,Maven 命令底层是插件的执行过程.了解插件和插件目标才有助于深刻的理解 Maven命令. 2.插件与命令的关系 Maven本质上是一个插件框 ...
- 【WPF学习】第六十七章 创建自定义面板
前面两个章节分别介绍了两个自定义控件:自定义的ColorPicker和FlipPanel控件.接下来介绍派生自定义面板以及构建自定义绘图控件. 创建自定义面板是一种特殊但较常见的自定义控件开发子集.前 ...
- radio取值
假设代码如下: 1) <input type="radio" name="radio" id="radio1" checke ...
- BUUOJ [极客大挑战 2019]Secret File
[极客大挑战 2019]Secret File 0X01考点 php的file伪协议读取文件 ?file=php://filter/convert.base64-encode/resource= 0X ...
- Apache solr velocity模块 漏洞复现
0x01 Solr简单介绍 Solr是建立在Apache Lucene ™之上的一个流行.快速.开放源代码的企业搜索平台. Solr具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平 ...
- 详解PHP反序列化中的字符逃逸
首发先知社区,https://xz.aliyun.com/t/6718/ PHP 反序列化字符逃逸 下述所有测试均在 php 7.1.13 nts 下完成 先说几个特性,PHP 在反序列化时,对类中不 ...
- 【题解】P2602 数字计数 - 数位dp
P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数 \(a\) 和 \(b\) ,求在 \([a,b]\) 中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中 ...
- python之excel表操作
python对excel表操作主要用到三个库,xlrd,xlwt,xlutils,分别用于excel表读,写,修改操作,以下将一个简单介绍 一.生成excel表:xlwt类 新建excel表,并写入数 ...
- 基于udp协议的套接字通信
服务端: import socket server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) server.bind(('127.0.0.1',8 ...
- gojs去水印
重点在go.js文件中将这个方法中的代码注释掉即可 搜索关键字 7ca11abfd022028846 然后注释下列代码,注释前先整理JS格式 function ni() { if(th) { var ...