单向链表之创建添加(C语言实现)
2018-03-19 16:32
344 查看
创建方式:
顺序创建(新加入的放在尾部)、逆序创建(新加入的放在头部)
1、顺序创建:
两种情况:
当链表为空时,将链表头直接指向新加入的节点及第一个节点;
当链表不为空时,首先遍历链表找到链表尾节点,然后将新加入的点挂在尾部。
2、逆序创建:
两种情况:
当链表为空时,将链表头直接指向新加入的节点及第一个节点;
当链表不为空时,首先将之前的第一个链表节点挂接到新插入的节点上 ,然后将链表头指向新插入的节点。
demo:
顺序创建(新加入的放在尾部)、逆序创建(新加入的放在头部)
1、顺序创建:
两种情况:
当链表为空时,将链表头直接指向新加入的节点及第一个节点;
当链表不为空时,首先遍历链表找到链表尾节点,然后将新加入的点挂在尾部。
2、逆序创建:
两种情况:
当链表为空时,将链表头直接指向新加入的节点及第一个节点;
当链表不为空时,首先将之前的第一个链表节点挂接到新插入的节点上 ,然后将链表头指向新插入的节点。
demo:
#include <stdio.h> #include <string.h> typedef struct student { int num; //学号 int score; //分数 char name[20]; struct student *next;//指针域 }STU; void link_creat_head(STU **p_head, STU *p_new) { STU *p_mov = NULL; //定义p_mov节点指针用于遍历 p_mov = *p_head; if(NULL == *p_head) {//当第一次加入链表为空时,head执行p_new *p_head = p_new; p_new->next = NULL } else { //第二次及以后加入链表 while(p_mov->next != NULL) { p_mov = p_mov->next;//找到原有链表的最后一个节点 } p_mov->next = p_new; //将新申请的节点加入链表 p_new->next = NULL; } } int main(int argc, char *argv[]) { STU *head, *p_new = NULL; int num, i = 0; printf("请输入链表初始个数:\n"); scanf("%d", &num); for(i=0; i<num; i++) { p_new = (STU *)malloc(sizeof(STU)); printf("请输入学号、分数、名字:\n"); //给新节点赋值 scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name); link_creat_head(&head,p_new); //将新节点加入链表 //free(p_new);//不能释放! } return 0; }
相关文章推荐
- C语言实现链表之单向链表(三)创建链表
- C语言数据结构之单向链表(已经调试可以实现相应的功能了,可是还是有几个问题现在还是不大理解,希望大家能够一起探讨)
- 【数据结构】C语言实现链表的创建及遍历链表
- 单向链表基本操作(C语言实现)
- 树的基本结构,以及利用链表实现树的各项操作(创建、添加/删除/打印树节点、销毁等等)
- list.c - A linked list by C --- C语言实现的单向链表
- C语言实现简单的单向链表
- C语言实现链表之单向链表(九)在任意位置插入结点
- 单向链表之排序(C语言实现)
- list.c - A linked list by C --- C语言实现的单向链表
- C语言实现链表之单向链表(二)结点内存申请及数据初始化
- C语言-------实现一个简单的单向链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 单向链表之释放(C语言实现)
- 单向链表之有序插入节点(C语言实现)
- C语言实现线性结构创建动态链表的学习心得(一)
- 用c语言+单向链表实现一个贪吃蛇
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 单向链表小练习--》创建链表头,添加删除链表节点,释放链表内存,选择插入数据
- C语言实现链表之单向链表(十)删除任意结点