简单链表,还需完善!

#include <stdio.h>
#include <stdlib.h>

struct node
{
 int num;
 struct node * next;
};

typedef struct node Node;
typedef struct node * Link;

void create_link(Link * head)
{
 *head = NULL;
}

void insert_node_head(Link * head,Link new_node)
{
    new_node->next = *head;
 *head = new_node;
}

void display_node(Link head)
{
 Link tmp;
 tmp = head;

while(tmp != NULL)
 {
  printf("num = %d\n",tmp->num);
  tmp = tmp->next;
 }
}

void is_malloc_ok(Link new_node)
{
     if(new_node == NULL)
 {
  printf("malloc error!\n");
  exit(-1);
  }
}

void create_newnode(Link * new_node)
{
 *new_node = (Link) malloc(sizeof(Node));
 is_malloc_ok(*new_node);
}

void insert_node_tail(Link *head,Link new_node)
{
    Link tmp;

tmp = *head;

if(*head == NULL)
 {
  new_node->next = *head;
  *head = new_node;
 }
 else
 {
  while(tmp->next != NULL)
  {
   tmp = tmp->next;
  }
  tmp->next = new_node;
  new_node->next = NULL;
 }
}

void insert_node_mid(Link *head,Link new_node,int num)
{
    Link tmp;
 tmp = *head;
   
 if(NULL == *head)
 {
  printf("link is empty!\n");
  return;
 }
 else
 {
     while(tmp->num != num && tmp->next != NULL)
     {
            tmp = tmp->next;
     }
        if(tmp->num == num)
  {
            new_node->next = tmp->next;
   tmp->next = new_node;
  }
  else
  {
   printf("no such node!\n");
  }
 }

}

void delete_node(Link *head,int num)
{
 Link tmp;
 Link p;
 tmp = p = *head;

if(NULL == *head)
 {
  printf("link is empty!\n");
  return;
 }

while(tmp->num != num && tmp->next != NULL)
 {
  p = tmp;
  tmp = tmp->next;
 }

if(tmp->num == num)
 {
        if(tmp == *head)
  {
            *head = tmp->next;
   free(tmp);
  }
  else
  {
   p->next = tmp->next;
   free(tmp);
  }
 }
 else
 {
  printf("no such node!\n");
 }
}

int main()
{
    Link head = NULL;
    Link new_node = NULL;
    int i;
 int num;

create_link(&head);

for(i = 0; i < 10;i++)
 {
        create_newnode(&new_node);
  new_node->num = i;
  //insert_node_head(&head,new_node);
  insert_node_tail(&head,new_node);
 }

printf("please input a num!\n");
 scanf("%d",&num);

// create_newnode(&new_node);
// new_node->num =  num;

// insert_node_mid(&head,new_node,10);
   
 delete_node(&head,num);

display_node(head);
    return 0;
}


c语言之simp _link相关推荐

  1. CSDN ARIMA R语言_R语言时间序列:ARIMA / GARCH模型的交易策略在外汇市场预测应用...

    原文链接: http://tecdat.cn/?p=17622​tecdat.cn 最近,我们继续对时间序列建模进行探索,研究时间序列模型的自回归和条件异方差族.我们想了解自回归移动平均值(ARIMA ...

  2. matlab sskf,[转载]fortran语言常用函数

    3. 编程语言结构 abort 中止计算或循环 break 终止最内循环 case 同 select 一起使用 continue 将控制转交给外层的 for或 while循环 else 同 if一起使 ...

  3. 操作系统形式化验证实践教程(11) - 结构化证明语言Isar(转载)

    操作系统形式化验证实践教程(11) - 结构化证明语言Isar 结构化证明语言Isar基本语法 apply方法和by方法虽然可以完成功能,但是看起来更像是命令式语言.使用Isar语言,还可以写得更加形 ...

  4. 操作系统形式化验证实践教程(11) - 结构化证明语言Isar

    操作系统形式化验证实践教程(11) - 结构化证明语言Isar 结构化证明语言Isar基本语法 apply方法和by方法虽然可以完成功能,但是看起来更像是命令式语言.使用Isar语言,还可以写得更加形 ...

  5. c语言实验与课程设计 李开,华中科技大学C语言课程设计实验报告及源代码.doc...

    华中科技大学C语言课程设计实验报告及源代码 课 程 设 计 报 告 题目: 航班时刻表信息查询系统 课程名称: C语言程序设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术 ...

  6. Newspaper 一个能下载 38 种语言新闻文章的 Python 模块

    这是「进击的Coder」的第 485 篇技术分享 作者:Ckend 来源:Python 实用宝典 " 阅读本文大概需要 7 分钟. " Newspaper 是一个很棒的 pytho ...

  7. 【零基础学C语言】知识总结八:struct 结构体与 union 共用体

    struct 结构体 struct即结构体,C程序中经常需要用相关的不同类型的数据来描述一个数据对象.例如,描述学生的综合信息时,需要使用学生的学号.姓名.性别等不同类型的数据时,像这种数据类型总是在 ...

  8. Go语言的错误异常处理机制及其应用

    一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...

  9. Go 知识点(19)— Go 语言中的野指针

    野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...

最新文章

  1. 栈和队列互相实现,一文弄懂它们的关系
  2. 道路交通安全违法行为图像取证技术规范_海康移动取证方案中的设备介绍
  3. 小白学docker(1)---docker安装
  4. lvds传输距离标准_如何正确看待POE交换机150米、长距离250米传输
  5. 博科SAN交换机zone配置(华为SNS系列交换机为例OEM博科)
  6. OLAP-druid-大数据Week13-DAY2-druid
  7. js基础-20-js对象赋值时的key值问题
  8. 用Adobe Illustrator将位图转为矢量图并上色
  9. Epicor 客制化 - 常用对象
  10. 计算机专业未来规划作文英文,以“未来的职业”写一篇英语作文
  11. 【hdu 6438】Buy and Resell
  12. 猿创征文|后端开发工程师提升开发效率神器推荐
  13. 【LOJ573】「LibreOJ NOI Round #2」单枪匹马
  14. micro、M3O微服务系列(三)
  15. 标准化拉普拉斯矩阵特征值范围为什么小于等于2?(证明)
  16. Pandas基础:文件读取与写入、Series和Dataframe、常用基本函数、排序
  17. Linux下的有名管道---使用两个管道实现两个进程之间的通信(手机模式)
  18. 2006年中国动漫行业预测及投资分析报告
  19. NLP-D62-nlp比赛D31刷题D15
  20. dsoframer控件学习小结(打开WORD,EXCEL等文件)

热门文章

  1. r语言中popsd和sd的区别_R语言中回归和分类模型选择的性能指标
  2. 浅谈 RISC-V 软件开发生态之 IDE
  3. 蓝牙配对码配置错误_“看yellow 的时候,连错了蓝牙耳机,结果....”哈哈哈哈我笑到村里通网!!...
  4. 相同元素分配到相同空间问题(放鸡蛋问题)详解
  5. knowledge-based systems 终于返回了意见——小修
  6. CodeM2018美团 初赛A轮 题目二 下棋
  7. GPRS/GPS模块组学习——服务器搭建之云服务器 ECS
  8. JavaScript 控制台输出彩色字
  9. 前端参数用MD5加密
  10. 提取16线激光雷达扫描线