链表的创建,遍历,清除

node *creatline(int n)

{

node *head=(node *)malloc(sizeof(node));

head->data=rand()%100;

head->next=NULL;

node *p=head;

int i=0;

while (i<n-1) {

p->next=(node *)malloc(sizeof(node));

p->next->data=rand()%100;

p->next->next=NULL;

p=p->next;

i++;

}

return head;

}

void printline(node *p)

{

while (p!=NULL) {

printf("%d\n",p->data);

p=p->next;

}

}

void releaseline(node *p)

{

node *q=p->next;

while (p!=NULL)

{

printf("%d\n",p->data);

free(p);

p=q;

if (q!=NULL)

{

q=p->next;

}

}

}

void releaseline2(node *p)

{

node *q=p->next;

printf("%d\n",p->data);

free(p);

if (q!=NULL) {

releaseline2(q);

}

}

时间: 2025-01-22 21:51:23

链表的创建,遍历,清除的相关文章

链表 :链表的创建+遍历

今天从数据结构开始看起,首先了解的是链表.我先从链表的创建开始,本人习惯使用java,开始介绍也使用java实现 链表 链表的创建 1.1连表的插: package link; /**  * linkCreate是创建链表,主要有链表的创建,  * 链表建立,链表的测试,打印链表的长度  * @author Administrator  * 在这里使用的是  *  */ public class LinkCreate<Item> { private Node first; private in

单链表的插入伪算法和用C语言创建单链表,并遍历

非循环单链表插入结点伪算法讲解 q插入p之后的伪算法:第一种表示方法:r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址p->pNext = q; // q保存了那一块结点的地址.q是一个指针变量,存放那个结点的地址.q->pNext = r; 第二种表示方法:q->pNext = p->pNext; // q的指针域指向p后面一个结点p->pNext = q; // p的指针域指向q 删除非循环单链表结点

[数据结构】【c语言】链表的创建和遍历

第一次写代码的博客,一个刚刚接触的新手,来这里主要是为了记录自己,方便自己以后浏览,也欢迎大家指正.先来个简单的,动态链表的创建和遍历. #include<stdio.h> #include<stdlib.h> #include<malloc.h> //定义链表的节点 typedef struct LNode { int data; struct LNode *next; } *LinkList; //创建链表函数 LinkList CreateList() { Lin

使用OC实现单链表:创建、删除、插入、查询、遍历、反转、合并、判断相交、求成环入口

一.概念 链表和数组都是一种线性结构,数组有序存储的,链表是无序存储的. 数组中的每一个元素地址是递增或者递减的关系,链表的每一个节点的地址没有此规律,它们是通过指针的指向连接起来. 链表种类:单链表.双向链表.循环链表.双向循环链表 单链表:一个数据域data.一个后继指针域next.也即:上一个节点指向下一个节点,尾节点指向空. 双向链表:一个数据域data.一个前驱指针域previous.一个后继指针域next.也即:上一个节点和下一个节点互相指向,尾节点指向空. 循环链表:一个数据域da

单链表 初始化 创建 头插法 尾插法 插入 删除 查找 合并 长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 #define TRUE 1 #define FALSE -1 #define NULL 0 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(LNode) #

C语言实现简单的单向链表(创建、插入、删除)及等效STL实现代码

实现个算法,懒得手写链表,于是用C++的forward_list,没有next()方法感觉很不好使,比如一个对单向链表的最简单功能要求: input: 1 2 5 3 4 output: 1->2->5->3->4 相当于仅仅实现了插入.遍历2个功能(当然遍历功能稍微修改就是销毁链表了) 用纯C写了份测试代码 /* 基本数据结构的定义以及函数的声明 */ typedef int ElemType; typedef struct Node { ElemType elem; struc

链表实现与遍历

#include <stdio.h>//单向循环链表实现与遍历 typedef struct Node { int data; struct Node *next; } Node; int main () { Node n1 = {1, NULL}; Node n2 = {2, NULL}; Node n3 = {3, NULL}; Node n4 = {4, NULL}; n1.next = &n2; n2.next = &n3; n3.next = &n4; n4.

单链表的创建算法

单链表的创建算法 当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表. 单链表的示意图如下: Head指针为单链表的头指针,单链表L:L既是单链表的名字,也是其头指针.链表中的最后一个结点的指针域定义为空指针(NULL). 单链表的定义: struct Node { ElemType data; struct Node *next; }; typedef struct Node LNode; typedef struct Node *LinkedList; 单链表有带头结点和不带头结

链表的创建以及链表节点的添加和删除

单链表的创建过程有下面几步: 1 ) 定义链表的数据结构; 2 ) 创建一个空表; 3 ) 利用malloc ( )函数向系统申请分配一个节点; 4 ) 将新节点的指针成员赋值为空. 若是空表,将新节点连接到表头:若是非空表,将新节点接到表尾; 5 ) 推断一下是否有兴许节点要接入链表,若有转到3 ),否则结束; 单链表的输出过程有下面几步 1) 找到表头; 2) 若是非空表.输出节点的值成员,是空表则退出; 3 ) 跟踪链表的增长,即找到下一个节点的地址; 4) 转到2 ). 接下来来一步步实

链表的创建,插入,删除,输出基本操作

#include<stdio.h>#include<cstdlib> struct student  //定义一个学生结点,结点包括值域和指针域{ int num;//学号 char name[20];//姓名 char address[20];//地址 struct student *next;//定义结点的指针域,指向下一个结点};typedef struct student LIST;LIST *CreateList();LIST *InsertNode(LIST *h,LI