链表的实现

转载 2011年01月09日 01:01:00

链表是一种非常重要的数据结构,比起数组来虽然操作繁琐,查找效率也不如数组效率高,但在进行插入删除操作时,链表具有数组无法比拟的效率,下面的代码是链表的实现

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100

typedef struct node{
 int item;
 struct node * next;
}*link;

link NODE(int item, link next)
{
 link p = malloc(sizeof *p);

 p->item = item;
 p->next = next;

 return p;
}

void init_list(link head)
{
 int i;
 srand(time(NULL));
 for(i = 0; i < N; i++)
  head->next = NODE(rand()%100, head->next);
}

void delete(link head)
{
 link p = head->next, front = head;
 
 while(p != NULL)
 {
  if(p->item >= 30 && p->item <= 70)
  {
   front->next = p->next;
   free(p);
   p = front;
  }
/*  else
  {
   front = p;
   p = p->next;
  }
*/  front = p;
  p = p->next;
  }
}

void show_list(link head)
{
 head = head->next;
 while(head != NULL)
 {
  printf("%d ", head->item);
  head = head->next; 
 }
 printf("/n");
}

int main(void)
{
 link head = NODE(-1, NULL);
 init_list(head);
 show_list(head);
 printf("delete:/n");
 delete(head);
 show_list(head);
 return 0;
}

相关文章推荐

单链表的实现-简单操作

  • 2016-11-18 22:50
  • 401KB
  • 下载

常用数据结构-数组实现静态链表

1. 静态链表简介           比起经常使用的动态链表,静态链表似乎用的不多,不过也有一些体现,比如FAT文件系统,所谓的静态和动态,就是指内存管理的动态静态,换言之,使用malloc和fr...

链表方法与实现

链表倒置的实现

  • 2014-09-22 23:15
  • 937B
  • 下载

SDUST-OJ-1681 Problem 求集合的交并补集(不用STL,手写单链表实现)

Problem A: 求集合的交并补集 任意给定两个包含1-30000个元素的集合A,B(集合中元素类型为任意整型数,且严格递增排列),求A交B、A并B、A-B和B-A集合。

双向链表实现

【分享】JS超精简实现链表!拜请各位JAVA C# 大牛指点

【分享】js超精简实现链表!拜请各位java c# 大牛指点 单向链表 百度百科:http://baike.baidu.com/view/549479.htm?fr=ala0_1 最近家里来了...

java实现链表操作

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)