c语言动态链表的创建

创建动态连链表就是将一个个节点连接起来

(1)动态生成节点

(2)输入节点数据

(3)将节点链在一起

例:

typedef struct Data

{

char num[20];

char name[10];

char sex;

float english;

float chinese;

float math;

};

typedef struct Node

{

struct Data data;//结构体类型//结构体嵌套

struct Node* next;//结构体指针型

}node,*Pnode;

Pnode phead=NULL;

Pnode ptail=NULL;

//创建结点

Pnode creat_node(int COUNT)

{

int i=0;

Pnode pnew=NULL;

for(i=0;i<COUNT;i++)  //COUNT为节点数

{

pnew=(Pnode)malloc(sizeof(node));//创建一个新节点

printf("请输入第%d个学生的信息:\n",(i+1));

printf("学号:\n");

scanf("%s",pnew->data.num);

printf("姓名:\n");

scanf("%s",pnew->data.name);

printf("性别:\n");

scanf("\n%c",&pnew->data.sex);

printf("英语:\n");

scanf("%f",&pnew->data.english);

printf("语文:\n");

scanf("%f",&pnew->data.chinese);

printf("数学:\n");

scanf("%f",&pnew->data.math);

if(ptail)

{

ptail->next=pnew;//第一个以后的结点

ptail=pnew;

}

else

{

phead=ptail=pnew;//第一个节点

}

pnew->next=NULL;

}

return phead;

}

时间: 2024-08-05 15:24:58

c语言动态链表的创建的相关文章

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

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

C语言动态链表数据结构

链表的操作增删改查 typedef int DATA; struct SNode { DATA data; SNode* pNext; }; SNode* g_head=NULL;//全局变量 //从头部添加 void AddHead(DATA nNum) { SNode* p = (SNode*)malloc(sizeof(SNode));//C语言的方式 //SNode* p = new SNode;//C++ 方式 p->data = nNum; p->pNext = g_pHead;

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

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

C语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。

// //  main.c //  dynamic_link_list // //  Created by ma c on 15/8/5. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:写一个函数建立有3名学生数据的动态单向链表,并输出链表中每个结点的所有内容. /* 建立动态链表的思想: 1.开辟一个新结点,并使p1,p2指向它: 2.读入一个学生数据给p1所指的结点: 3.head = NULL,n = 0; 4.判断读

使用C语言描述静态链表和动态链表

静态链表和动态链表是线性表链式存储结构的两种不同的表示方式. 静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针,故仍具有链式存储结构的主要优点. 动态链表是相对于静态链表而言的,一般地,在描述线性表的链式存储结构时如果没有特别说明即默认描述的是动态链表. 下面给出它们的简单实现,关于线性表更为详尽的C语言的实现,可以参考 http://www.cnblogs.com/choon/p/3876606.html 静态链表 #define _CRT_SECURE_NO_

《C语言中动态数组的创建及引用》

C语言中动态数组的创建及引用 动态数组是相对于静态数组而言的,静态数组的长度是预定义好的,在整个程序中,一旦给定了数组大小后就无法改变,,而动态数组则不然,它可以根据程序需要重新指定数组的大小.动态数组的内存空间是由堆动态分配的,通过执行代码为其分配储存空间,只有程序执行到分配语句时,才为其分配储存空间. 对于动态数组,其创建比静态数组更麻烦一些,使用完必须由程序员自己释放,否则将引起内存泄漏,但是其使用非常灵活,能根据程序需要动态分配大小,因此相对于静态数组来说,使用动态数组的自由度更大. 对

学习C/C++语言:结构体,动态链表

//*************************************************************** //结构体:简单的静态链表 #include<stdio.h> #include<string.h> #define NULL 0 #define SIZE 10 struct student { char num[SIZE]; float score; struct student *next; }; void main() { struct stu

c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表. 解:程序: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Student *next; }; int n; struct Student *creat(void)//定义函数返回一个指向链表头的指针 { struct Student *head

C语言动态内存管理

1-概述 动态存储管理的基本问题是:系统如何按请求分配内存,如何回收内存再利用.提出请求的用户可能是系统的一个作业,也可能是程序中的一个变量. 空闲块 未曾分配的地址连续的内存区称为"空闲块". 占用块 已分配给用户使用的地址连续的内存区称为"占用块". 系统刚刚启动时,整个内存可看做一个大的"空闲块",随着用户请求的进入,系统依次分配相应的内存. 在系统运行过程中,内存被分为两大部分:低地址区(若干占用块)和高地址区(空闲块). 经过一段时间后