链表的三种创建形式

刚刚学习完链表,总结了三种链表的创建方式,从表前插入节点,从表后插入节点和它的进化版??

#include <stdio.h>

#include <stdlib.h>

typedef struct node

{

char data;

struct node *next;

}linkList;

//下面??的是从前面插入,但是缺点比较明显,因为链表的顺序和你输入的顺序是相反的。。。推荐使用后面的

linkList *CreatList_1()

{

char ch;

linkList *head = NULL,*s = NULL;

ch = getchar();

while(ch!=‘$‘)

{

s = (linkList *)malloc(sizeof(linkList));

s->data = ch;

s->next = head;

head = s;

    char a = getchar();

    ch = getchar();

}

return head;

}

//这是从后面插入的初级形式

linkList *CreatList_2()

{

char ch;

linkList *head,*s,*r = NULL;

head = NULL;

s = NULL;

ch = getchar();

while(ch!=‘$‘)

{

s = (linkList *)malloc(sizeof(linkList));

s->data = ch;

if(head==NULL)head = s;

else r->next = s;

r = s;

    char a = getchar();

ch = getchar();

}

if(r!=NULL)r->next = NULL;

return head;

}

当当当当,下面是高级形式,头节点是一个不含数据的空节点,从第二个节点开始储存数据,这样刚好对应1,2,3。。。的顺序,并且少了if(r!=NULL)的判断语句。

linkList *CreatList_3()

{

char ch;

linkList *head, *s, *r;

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

r = head;

ch = getchar();

while(ch!=‘$‘)

{

s = (linkList *)malloc(sizeof(linkList));

s->data = ch;

r->next = s;

r = s;

char a = getchar();

ch = getchar();

}

r->next = NULL;

return head;

}

linkList *GET(linkList *head,int i)

{

int j = 0;

linkList *p;

p = head;

while((p->next!=NULL)&&(j<i))

{

p = p->next;

j++;

}

if(i == j)return p;

else return NULL;

}

最后要注意的一个关键点,在创建循环的每一个ch = getchar()前要加一句 char a = getchar(),用来吸收输入数据时隔开每一个数据的空格

不然就会出现每两个有用的节点间出现空节点的现象。

原文地址:https://www.cnblogs.com/farytormenta/p/11569199.html

时间: 2024-08-10 22:46:29

链表的三种创建形式的相关文章

Python Django 多对多三种创建方式 form组件 cookie和session

一 表中多对多关系三种创建方式 以Book表和Author表多对多关系例 1.第一种方式:全自动(推荐使用):models.ManyToManyField(to='类名') 优点:不需要你手动创建第三张表 缺点:第三张表不是你手动创建的,字段是固定的无法拓展 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_place

多对多三种创建方式、forms组件、cookies与session

多对多三种创建方式.forms组件.cookies与session 一.多对多三种创建方式 1.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字段是固定的无法做扩展 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = mode

多对多三种创建方式,forms组件,cookie和session

多对多三种创建方式 1.全自动 优点:不需要自己手动创建第三章表缺点:由于第三张表不是自己创建的,也就是说第三张表字段是固定的没有办法做扩展 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = models.ManyToManyField(to='Author') class Au

三种创建XMLHttpRequest对象的方法

XMLHttpRequest对象,也就是Ajax交互的核心对象. 这里列举三种创建Ajax对象的方法. 第一种: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples&

Activity.overridePendingTransition三种动画形式调试记录

定义 Activity A,Activity B. Activity.overridePendingTransition 是在 A 启动 B 时定义这个过程中用什么动画的. 常见三种动画形式: 1) A slide up B still,  2) A disapper B slide up,  3) A  and B both slide up. 1) A slide up B still 核心代码: slide_up_z.xml <?xml version="1.0" enco

Postgres 数据库三种创建语句的速度对比

表的记录数: 1578463 select count(*) from reorder_guideline;   count ---------  1578463 (1 行记录) 2. 三种创建表的语句Create Table: (1) 最常用的 (23171.485ms) a1stream_db=> create table reorder_guideline_2 as table reorder_guideline;   时间:23171.485 ms (2) 带Unlogged 标识的 (

Js函数的三种创建、四种调用

1 // 函数的三种创建方法 2 function one(){ // 函数声明,不属于任何对象,始终默认为全局对象 3 console.log("第一个函数") 4 //默认有一个return this,返回函数中的内容 5 } 6 one(); //必须调用:可以在函数声明前调用(预处理变异机制) 7 8 var fn=function(){ //函数表达式 9 console.log("第二个函数") 10 } 11 fn(); //必须先声明再调用 12 1

2019年6月14日 Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端传输数据编码格式contentType 批量插入数据和自定义分页器 一.MVC与MTV MVC(Model View Controller 模型-视图-控制器)是一种Web架构的模式,所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求. M

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外