C语言实现简单的链表操作----插入元素,超级简单

#include<stdio.h>
#include<stdlib.h>
typedef struct Number
{
int data;
struct Number*pNext;
}NODE;
//创建链表
NODE*create(int n,int m)
{
int i;
NODE*h=NULL,*s,*p;
p=(NODE*)malloc(sizeof(NODE));
h=p;
p->pNext=NULL;

for(i=1;i<=n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m;
s->pNext=p->pNext;

//把s挂在p后面
p->pNext=s;

p=p->pNext;
}

return h;
}
void outlist(NODE*h)
{
NODE*p;
p=h->pNext;//首节点(第一个有效元素地址)
printf("Head");
while(p)
{
printf("->%d",p->data);
p=p->pNext;
}
printf("\n");
}

int main(void)
{
NODE *h;
//创建8个节点长度的链表
h=create(8,22);
outlist(h);
}

比较简单  如有问题请与本人联系哦

时间: 2024-12-09 04:24:42

C语言实现简单的链表操作----插入元素,超级简单的相关文章

C语言学习之单向链表操作

该文件为单向链表操作的一些接口:(如发现有错误的地方,及时告知,不胜感激!) list.h #ifndef  _CHAINLIST_H_ #define  _CHAINLIST_H_ typedef struct { char key[15]; char name[20]; int age; }DATATYPE_T; typedef struct Node { DATATYPE_T  data; struct Node *next; }chainListType; /* 添加节点到链表末尾 */

数据结构之---c语言实现循环单链表操作

//=========杨鑫========================// //循环单链表的实现 #include <stdio.h> #include <stdlib.h> typedef int ElemType; //定义结点类型 typedef struct Node { ElemType data; struct Node *next; }Node,*LinkedList; int count = 0; //1.单循环链表的初始化 LinkedList init_ci

C语言小程序-基于链表的学生信息管理

程序支持增加.查询.删除.存盘和读取操作 1. 头文件studentsys.h定义如下 /* student management system by list */ #ifndef _StudentSys_H #define _StudentSys_H #define MAX 25 /* lenth of name string */ typedef struct _Grade Grade;; typedef struct StdNode Std;; typedef struct ListNo

链表 创建 插入 删除 查找 合并

最近学习了一下单链表的操作,将代码保存如下,供以后查看. 链表创建: 1.先建立一个不含数据的头指针*head,头指针的链接域为NULL. 2.声明一个用于暂存新申请空间的指针*pc,一个用于保存创建的链表的指针*r,令*r指向*head. 3.在循环中,为指针*pc申请空间,并给数据域赋值,head->next = pc, pc->next = NULL, head = pc. #define _CRT_SECURE_NO_DEPRECATE /*取消scanf,printf不安全之类的错误

哈,又一款超级简单的队列(MQ)实现方案来了~

开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, 也琢磨了一个超级简单的队列实现. 说是超级简单,嗯,绝对是超级简单,队列的存储采用Redis进行持久化存储,采用Netty提供HTTP方式的队列的出/入.Redis的客户端采用的Jedis.然后呢,然后就没了啊. 一.Redis Redis内置订阅发布模型(Publish/Subscribe),其缺

有序链表的插入操作

C语言教材的有序单链表程序的插入我并不满意,因为链表为空,表尾等原因导致有四种情况要处理,给同学们的阅读造成困难.书上的做法较复杂的一个原因是链表是不带头结点的,所以要考虑新结点插入时会不会变成表头, 例如:当链表为空时, 插入3, 3变成表头,  再插入1, 链表为1->3, 链表头指向1, 代码必须处理这样的情况. 第一部分: 不含头结点的链表插入的非常规思路 下面我给出另外一个思路,新结点一律插入表头,这样就不要考虑链表为空的情况了.但是可能无序,可以从表头开始,相邻节点不符合次序要求交换

就C语言的指针、链表的原理和各类操作撰写一篇技术博客,说说自己学习C语言指针和链表的体会

一.指向结构体变量的指针变量 指向结构体变量的指针变量的定义形式与一般指针变量的定义形式相同,只是将其指向类型定义为结构体类型即可.例如:        struct person            { charname[20];             char sex;             int age;             float height;            };       struct person *p;则指针变量p,它可以指向struct person类

带头节点的单链表的插入操作

1.偶然看到了十字链表的应用,想到之前在<数据结构与算法分析>的链表一章中,需要用多重表实现一个简单的查询功能.功能需求如下: “已知 学生 和 学校课程 总数 分别为 40000 和 2500,现在需要得到两份报告,一份显示每门课成注册的所有学生信息, 一份显示每个学生注册了哪些课程.” 显然可以用一个 40000 * 2500 个元素的二维数组来解决,但是每个学生选课数目很少,因此会浪费很多空间.因此选择十字链表来实现. 既然是链表,那么肯定要有插入操作,于是便有了本文.算是对功能实现前的

关于C语言的指针、链表的原理和各类操作

今天课上我们老师为我们讲述了c语言的指针.链表的原理以及各类操作. 一.指针 1.指针 指针是一个存储计算机内存地址的变量.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具体类型的变量地址,例如int.long和double.指针也可以是void类型.NULL指针和未初始化指针.指针是一个存储计算机内存地址的变量.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具体类型的变量地址,例如int.long和double.指针也可以是void类型.NULL指针和未初始化指针. 2.数