精华内容
下载资源
问答
  • c语言链表创建

    2018-10-23 11:31:28
    详细用c语言创建链表,通俗易懂链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以...
  • C语言链表创建

    万次阅读 2018-07-24 20:27:38
    //创建一个节点 printf ( "node_ptr->data=%d\n" ,node_ptr->data); //打印节点里的数据 printf ( "node_ptr->next=%d\n" ,node_ptr->next); node_ptr= node_ptr->next; node_ptr=create_list_node(data2)...
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct  list_node
    {
        int data ; 
        struct list_node *next ;
    };
    
    typedef struct list_node list_single ;  
    list_single *create_list_node(int data)
    {
        list_single *node = NULL ;
        node = (list_single *)malloc(sizeof(list_single));
        if(node == NULL){
            printf("malloc fair!\n");
        }
        memset(node,0,sizeof(list_single));
        node->data = data ;
        node->next = NULL ;
        return node ;
    }
    int main(void)
    {
        int data = 100 ;
        int data2=200;
        list_single *node_ptr = create_list_node(data); //创建一个节点
        printf("node_ptr->data=%d\n",node_ptr->data);   //打印节点里的数据
        printf("node_ptr->next=%d\n",node_ptr->next);  
        node_ptr= node_ptr->next;
        node_ptr=create_list_node(data2);
        printf("node_ptr->data=%d\n",node_ptr->data);   //打印节点里的数据
        printf("node_ptr->next=%d\n",node_ptr->next);  
        free(node_ptr);
        return 0 ;
    }
    
    展开全文
  • //C语言链表创建,删除,插入,遍历 //但是头节点问题没解决,记录一下 #include <stdio.h> #include <string.h> #include <stdlib.h> struct Student { char name[10]; struct Student *next...
    //C语言链表创建,删除,插入,遍历
    //但是头节点问题没解决,记录一下
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct Student
    {
        char name[10];
        struct Student *next;
    };
    
    int n=0;//链表长度
    
    struct Student* creat()
    {
        struct Student *head;
        struct Student *p1,*p2;
        char temp[10];
        p1=(struct Student*)malloc(sizeof(struct Student));
        scanf("%s",p1->name);
        head=p1;
        p2=p1;
        n++;
        while(1)
        {
            scanf("%s",temp);
            if(strcmp(temp,"00")==0)//00为止链表结束创建
                break;
            p1=(struct Student*)malloc(sizeof(struct Student));
           strcpy(p1->name,temp);
            p2->next=p1;
            p2=p1;
            n++;
        }
        p1->next=NULL;
        return head;
    }
    
    void display(struct Student*head)
    {
        struct Student *p=head;
        while(p!=NULL)
        {
            puts(p->name);
            p=p->next;
        }
    }
    
    void del(struct Student*head,int num)
    {
        struct Student*p=head;
        struct Student*q=p;
        int i;
        if(num==1&&n!=1)
        {
            p=head;
            head=head->next;
            puts(head->name);//??????
        }
        else if(num==n&&n!=1)
        {
            for(i=0;i<num-2;i++)
            {
                p=p->next;
            }
    
            p->next=NULL;
    
        }
        else if(n==1&&num==1)
        {
            head=NULL;//????/
        }
        else
        {
            for(i=0;i<num-2;i++)
            {
                p=p->next;
            }
            p->next=p->next->next;
        }
    n--;
    }
    
    struct Student * insert(struct Student *head,int num,char a[])
    {
        struct Student *p=head;
        struct Student *p1,*p2;
        int i;
        if(num==0)//?????
        {
            p1=(struct Student*)malloc(sizeof(struct Student));
            strcpy(p1->name,a);
            head=p1;
            p1->next=p;
        }
        else if(n==num)
        {
            for(i=0;i<num-1;i++)
            {
                p=p->next;
            }
            p1=(struct Student*)malloc(sizeof(struct Student));
            strcpy(p1->name,a);
            p->next=p1;
            p1->next=NULL;
        }
        else//mid
        {
            for(i=0;i<num-1;i++)
            {
    
                p=p->next;
            }
            p2=p->next;
            p1=(struct Student*)malloc(sizeof(struct Student));
            strcpy(p1->name,a);
            p->next=p1;
            p1->next=p2;
    
        }
    
     n++;
    }
    
    展开全文
  • 功能:查找显示联系人信息,删除,添加联系人,修改联系人信息; 联系有信息有:电话号码,姓名,Email,地址;
  • C语言链表创建与释放

    千次阅读 2018-09-29 11:27:13
    #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; typedef struct Node ...// 创建节点 List *create_node(int num) {  List *node ...

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    typedef struct Node
    {
        int data;
        struct Node *next;

    } List;

    // 创建节点

    List *create_node(int num)
    {
        List *node = NULL;
        node = (List *)malloc(sizeof(List));
        if(node == NULL){
            printf("malloc error!\n");
        }
        memset(node,0,sizeof(List));
        node -> data = num;
        node -> next = NULL;
        return node;
    }

    // 释放链表

    void Free_list(List *head){

        List *freeNode;
        while (NULL != head){
            freeNode = head;
            head = head -> next;
            free(freeNode);
        }

        return;
    }

    int main(void)
    {
        int num = 200;
        List *node_head = create_node(num);
        List *pNode = node_head;

        for(int i = 0; i < 100; i++){
            int num2 = num + i * 2;
            List *node_middle = create_node(num2);
            pNode -> next = node_middle;
            pNode = node_middle;
        }

        pNode -> next = NULL;

        pNode = node_head;
        // 遍历链表
        while (pNode != NULL){
            printf("pNode -> data = %d\n",pNode -> data);
            printf("pNode -> next = %p\n",pNode -> next);

            pNode = pNode -> next;
        }


        Free_list(node_head);
        return 0;
    }

    展开全文
  • 因为各种原因,尽管c语言期末考也拿了八十多分,却仍然对链表处在完全甍逼的状态,以至于之后的数据结构课听天书,实验课做不出来,于是决定重学一波链表的知识,特此记录笔记001—创建一个简单的链表1.1 认识链表...

    因为各种原因,尽管c语言期末考也拿了八十多分,却仍然对链表处在完全甍逼的状态,以至于之后的数据结构课听天书,实验课做不出来,于是决定重学一波链表的知识,特此记录笔记

    001—创建一个简单的链表

    1.1 认识链表

    所谓链表,一言蔽之就是一连串带有指针的结构体,像XX蜈蚣一样连在一起。(嗯我就是觉得链表有这么恶心)

    其基本元素是一个结构体变量,其中包含了一些数据及一个与结构体同种类型的指针。因为链表的每个结点都是随机分散在内存中的(这是链表对于数组在一些方面的优势),这个指针就是用来联系上下,将他们串在一起的连接部。

    例如:

    typedef struct node

    {

    int data; //用于存放数据

    struct node *next; //这个就是连接部,用于寻找下一个结点

    }Node,*Pnode; //如果我没理解错的话,*Pnode就是Node *的别名,专门用来创建指针,不用再多打一个*号;

    PS:为什么连接部是一个同种的结构体指针?

    —>必须同种类指针才能指向同种类变量,例如int类型的指针不能指向double类型的变量,因为他们的内存大小不同。这里就是这个原因。至于如果想不明白为什么我明明在定义结构体,却在内部又用到了它,我建议不要纠结这个问题,先照着用比较好。。。

    1.2 开始创建最简单的链表吧

    先看一眼这个函数:

    Node *create(int len)

    {

    Pnode head=NULL,tail=NULL,temp=NULL;

    int i;

    printf("let's create it ! \n");

    head=(Node *)malloc(sizeof(Node)); //给头结点分配空间,若失败则报错

    if(!head)

    {

    printf("error");

    exit(-1);

    }

    head->next=NULL;

    printf("enter your data\n");

    for(i=0;i

    {

    temp=(Node *)malloc(sizeof(Node)); //正式开始创建,为每一个结点分配

    if(!temp)

    {

    printf("error");

    exit(-1);

    }

    //如果你想创建一个更简单的链表,可以把scanf输入改成固定的输入,如:

    // temp->data=i*5;

    scanf("%d",&temp->data); //这里temp->data相当于一个普通的int 类型变量,需要加&

    temp->next=NULL; //先把没指向的指针指空,避免出现野指针

    if(!head->next) //当头部指向为空时条件成立,将头部与结点相连(即创建第一个结点的情况)

    {

    head->next=temp;

    }

    else //之后每个结点都从尾部链接

    {

    tail->next=temp;

    }

    tail=temp; //新的尾部

    }

    return head; //将头返回

    }

    这个函数用的是一种非常简单的创建一个链表的方法,链表的长度直接由参数len决定,最后返回链表的头指针

    首先被创建出来的是三个指针,分别代表指针的头部,尾部,和一个“临时”指针

    头部就是链表的头,作为大哥先要给它分配好空间,方便留作后面牵头使用。

    然后就是正式开始创建主体了,简单来讲就是临时工temp不断的从malloc处申请和搬运空间,然后和head或tail一起把它们像火车车厢一样一节节连起来。搬运出来的空间都已经是结构体的形状了 ,可以让tail和head直接使用

    之后这里有一个“分歧”(if,else),这个空间以什么方式加入链表?因为这里我们想要从尾部插入,所以除了第一个还要用来和牵头大哥head联系外,所有结点都“给”tail。这样,每次创建的结点都由temp搬运过来,并让旧的尾巴与他相连,让他成为新的(巫妖王 )尾巴,不断重复直到结束循环。

    这样,我们就创建了一个最最简单的链表了,之后只要把头返回出去,就可以通过这个头指针,牵出一整条链表。

    这一篇的内容就是这样了w,个人小笔记

    下面是完整的代码:

    #include

    #include

    typedef struct node

    {

    int data;

    struct node *next;

    }Node,*Pnode; //*Pnode相当于Node *

    Node *create(int len)

    {

    Pnode head=NULL,tail=NULL,temp=NULL;

    int i;

    printf("let's create it ! \n");

    head=(Node *)malloc(sizeof(Node)); //给头结点分配空间,若失败则报错

    if(!head)

    {

    printf("error");

    exit(-1);

    }

    head->next=NULL;

    printf("enter your data\n");

    for(i=0;i

    {

    temp=(Node *)malloc(sizeof(Node)); //正式开始创建,为每一个结点分配

    if(!temp)

    {

    printf("error");

    exit(-1);

    }

    //temp->data=i*3;

    scanf("%d",&temp->data); //这里temp->data相当于一个普通的int 类型变量,需要加&

    temp->next=NULL; //先把没指向的指针指空,避免出现野指针

    if(!head->next) //当头部为空时条件成立,将头部与结点相连(即创建第一个结点的情况)

    {

    head->next=temp;

    }

    else //之后每个结点都从尾部链接

    {

    tail->next=temp;

    }

    tail=temp; //新的尾部

    }

    return head; //将头返回

    }

    int main()

    {

    int len;

    Pnode head;

    printf("hello! \n");

    printf("how many do you want? \n");

    scanf("%d",&len);

    head=create(len);

    printf("this is all : \n");

    while(head->next!=NULL)

    {

    printf("%d ",head->next->data);

    head=head->next;

    }

    return 0;

    }

    展开全文
  • 学生成绩排序与平均分计算利用c语言链表创建插入删除#include#include#define NULL 0#define LEN sizeof(struct student)struct student{long num;float score;struct student *next;};int n;struct student *creat...
  • C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 VS2019编写简单的C...
  • #include"stdafx.h" #include #define LEN sizeof(student) struct student{ int num; float score; student *next; }; student * creat(){ int num; float score;...的话没有输出什么东西啊
  • 经过三天时间,日思夜想,终于把整个动态链表理顺了,其实挺简单,从添加到删除,测试完成代码如下: #include<stdio.h> #include<stdlib.h> typedef struct node //创建结构体 { int data; ...
  • c语言链表详解(超详细)

    万次阅读 多人点赞 2018-06-03 16:16:01
    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入...
  • C语言链表创建

    2020-09-24 21:19:17
    C语言链表 顺序连接创建链表 #include<stdio.h> #include<stdlib.h> //以每个节点输入一个数字为例 typedef struct NUM { int num; struct NUM* next; }list; list* create(int n)//创建n个节点的...
  • C语言链表操作详解

    万次阅读 多人点赞 2018-12-29 19:01:55
    为什么要使用链表 在未学习链表时,我们常用的存储数据的方式无非就是数组。...而链表则可以实现以上这些数组所不具备的功能,此时引入了结构体来实现创建链表的操作。 链表的特点: n个节点离散分配 每一个节...
  • 一步一步教你从零开始写C语言链表

    万次阅读 多人点赞 2017-04-02 14:34:39
    发送"链表"即可获取。 为什么要学习链表链表主要有以下几大特性: 1、解决数组无法存储多种数据类型的问题。 2、解决数组中,元素个数无法改变的限制(C99的变长数组,C++也有变长数组可以实现)。 3、数组...
  • C语言链表

    2017-11-23 16:02:54
    c语言链表
  • 主要介绍了c语言链表基本操作,大家参考使用吧
  • C语言链表-创建链表并且从键盘输入赋值

    万次阅读 多人点赞 2017-10-03 23:43:31
    链表C语言里面学习比较困难的一部分内容,下面这个例子就演示了创建一个链表并且从输入端赋值,希望对大家有用。#include #include struct link { int num; struct link *next; }; int main() { int n,i; ...
  • C语言链表创建代码

    2020-07-25 16:48:11
    //创建链表函数 struct Student *Create() { struct Student *pHead = NULL; struct Student *pEnd, *pNew; iCount = 0; pEnd = pNew = (struct Student*)malloc(sizeof(struct Student)); printf("please first ...
  • // An highlighted block var foo = 'bar';
  • c程序语言的链表创建,插入与删除 最近学习c语言的链表,总结了来链表的创建插入删除的基本技巧。希望能帮到初学者。 1.链表的创建 动态链表的好处就是能够充分利用空间,使空间不被浪费; 代码如下: #include...
  • C语言链表创建和输出

    千次阅读 2019-09-24 23:24:47
    # include <stdlib.h> //包含malloc()的头文件 # include <stdio.h> struct node //链表节点的结构 { int num; struct node *next; }; int main(void) { ...
  • C语言链表初步

    2015-08-18 13:08:03
    C语言 链表,适合初学者使用,链表创建,插入,删除,快速排序,判断是否为空基本实现
  • c语言链表

    2017-05-01 23:23:59
    c语言链表 1. 链表介绍 C语言的单向链表翻转是面试官常问问题之一,故此,咱就谈一谈,链表并不是如此可怕,学不会,想不通. 链表和数组一样都是存储数据,链表是非连续,非顺序的存储结构. 链表是灵活的内存...
  • C语言链表操作

    2013-07-09 19:25:17
    C语言链表创建、查找、排序、删除、插入、输出、释放内存。如有错误请指点。请尊重原创!
  • C语言链表程序

    2012-05-23 20:56:42
    C语言链表程序,内含链表的创建、插入、查找、遍历、删除和释放。
  • C语言链表创建和遍历

    万次阅读 2017-03-20 14:56:03
    链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,638
精华内容 18,255
关键字:

c语言链表创建

c语言 订阅