zoukankan      html  css  js  c++  java
  • C链表

    #include <stdio.h>
    #include <stdlib.h>
     
    struct grade {
      int score;
      struct grade *next;
    };
    typedef struct grade NODE;  //typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。
    //使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,
    //另一个是简化一些比较复杂的类型声明。
    struct grade *create();   //创建链表
    void insert(NODE *head,NODE *pnew,int i);   //插入链表
    void pdelete(NODE *head,int i);   //删除列表
    void display(NODE *head);   //输出链表
    void Pfree(NODE *head);    //销毁链表
     
    int main(int argc, char *argv[]) {
        struct grade *head,*pnew;
        head=create();
        if (head==NULL)
            return 0;
        printf("输出创建的链表:");
        display(head);
        pnew=(NODE *)malloc(sizeof(NODE));
        if (pnew==NULL) {
            printf("创建失败!");
            return 0;
        }
        pnew->score=88;
        insert(head,pnew, 3);   //将新节点插入节点3的后面
        printf("插入后的链表:");
        display(head);
        pdelete(head,3);   //删除节点3
        printf("删除后的链表:");
        display(head);
        Pfree(head);
        return 0;
    }
     
    struct grade *create() {
        NODE *head,*tail,*pnew;
        int score;
        head=(NODE *)malloc(sizeof(NODE));  //创建头节点。
        if (head==NULL) { //创建失败返回
            printf("创建失败!");
            return NULL;
        }
        head->next=NULL;  //头节点指针域置NULL
        tail=head;  // 开始时尾指针指向头节点
        printf("输入学生成绩:");
        while (1) { //创建链表
            scanf("%d",&score);
            if (score<0) //成绩为负是退出循环
                break;
            pnew=(NODE *)malloc(sizeof(NODE));  //创建新节点
            if (pnew==NULL) { //创建失败返回
                printf("创建失败!");
                return NULL;
            }
            pnew->score=score;  //新节点数据域存放输入的成绩
            pnew->next=NULL;   //新节点指针域置NULL
            tail->next=pnew;  //新节点插入到表尾
            tail=pnew;   //为指针指向当前的尾节点
        }
        return head;  //返回创建链表的头指针
    }
    void display(NODE *head) {
        NODE *p;
        for (p=head->next; p!=NULL; p=p->next)
            printf("%d ",p->score);
        printf("
    ");
    }
    

    参考:https://www.oschina.net/code/snippet_105637_43706

    1. typedef struct
    (1) 

    struct{ int x; int y; }test1; 
    定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了。

    (2) 

    struct test {int x; int y; }test1; 
    
    定义了 结构 test1,
    test1.x 和 test1.y 可以在语句里用了。
    与 1 比,省写 了 test

    (3)

    typedef struct test{
        int x; int y;
    }text1,text2; 
    
    这种结构 的(类型)别名 叫 text1 或叫 text2

    (4)

    typedef struct LNode{
        char data;
        struct LNode *next;
    }LNode,*LinkList;

    LNode为struct LNode{}创建了一个别名,以后用LNode来代替struct LNode,
    LinkList是创建LinkList类型的指针,代替所有指向这个结构的指针(LinkList代替struct LNode *)。

    (5)举例

    #include<stdlib.h>
    #include<stdio.h>
    int main(){
        typedef struct test{
            int a;
            int b;
        }tt;
        struct test t;
        tt testt;   //tt = struct test
        t.a=1;
        testt.b=2;
        printf("a:%d
    ",t.a);
        printf("b:%d
    ",testt.b);
        return 0;
    }
  • 相关阅读:
    hdoj--2098--分拆素数和(水题)
    hdoj--5563--Clarke and five-pointed star(简单几何)
    zzulioj--1813--good string(模拟)
    docker(3)docker下的centos7下安装jdk
    docker(2)安装centos7镜像与容器管理
    docker安装
    大数据简介
    esper(1)-窗口概述
    idea(2)快捷键
    idea(1)-idea初装
  • 原文地址:https://www.cnblogs.com/stellar/p/8630235.html
Copyright © 2011-2022 走看看