精华内容
下载资源
问答
  • 创建一个链表

    万次阅读 多人点赞 2018-08-24 23:33:46
    不知道为什么总是忘了链表的操作, 主要就是平时用的少, 希望自己通过写这编文章能加深链表操作的印象 目录 1.首先得要有两个基本的头文件 2.再然后得要有个结构体 3. 这部分是函数前置声明 4.链表初始化 ...

     不知道为什么总是忘了对链表的操作, 主要就是平时用的少, 希望自己通过写这编文章能加深对链表操作的印象

    目录

    1.首先得要有两个基本的头文件

    2.再然后得要有个结构体

     3. 这部分是函数前置声明

    4.链表初始化

     5.插入节点

     6.打印整个链表

    7. 释放整个链表的内存

     8.整个程序示例

    9.打印结果


     

    1.首先得要有两个基本的头文件

    #include<stdio.h>       //用于scanf, printf 标准输入输出
    
    #include<stdlib.h>      //用于malloc, free 内存申请及释放

    2.再然后得要有个结构体

    一个节点就像火车的一节车厢, data是车厢里面的东西, next相当于一个钩子, 用于将车厢之间的连接起来

    typedef struct node          //typedef 用于取struct node 的别名
    {
            int data;
            struct node *next;
    }*PNODE, NODE;                // PNODE 就是 struct node *  ,  NODE就是 struct node

     3. 这部分是函数前置声明

    PNODE init();                           //链表初始化
    void insert(PNODE head, int newdata);   //插入节点
    void print(PNODE head);                 //打印整个链表
    void freeAllNode(PNODE head);           //释放整个链表的内存

    4.链表初始化

    定义一个节点, 其在整个链表操作中都不存储数据, 比较特殊, 与head直接相连

    PNODE init()
    {
    	PNODE temp = (PNODE)malloc(sizeof(NODE));  //定义一个节点
    	temp->next = NULL;                    //这个节点比较特殊, 它不用于存储数据
    	return temp;
    }

     5.插入节点

    插入节点有两种方式: 1是头插, 2是尾插

    先看头插

    void insert(PNODE head,int newdata)
    {
    
    	PNODE temp=(PNODE)malloc(sizeof(struct node));  //先开辟一块内存用于存放要插入的数据
    	temp->data = newdata;
            
            //头插
    	temp->next = head->next;    //head->next就是节点A, 将temp连向A
    	head ->next= temp;          //将head相向temp
    }

    再看尾插

    void insert(PNODE head,int newdata)
    {
    
    	PNODE temp=(PNODE)malloc(sizeof(struct node));
    	temp->data = newdata;
    
    	//尾插
    	PNODE p; // = (PNODE)malloc(sizeof(NODE)); //这里应该是不需要申请空间的,谢谢网友指正
    	p = head;
    	while (p->next != NULL) p = p->next;  //先定义一个p, 使它指向最后一个节点
    	p->next = temp;                       //将p连向temp
    	temp->next = NULL;                    //temp连向NULL
    }

     6.打印整个链表

    链表的打印只能从head开始遍历, 不能像数组可以使用下标那么便利

     

    void print(PNODE head)
    {
    	PNODE temp=head->next;   //定义temp指向A, 即第一个有内容的节点('空的'的下一个节点)
    	while (temp!=NULL)       //在temp不为NULL是, 一直循环, 直到temp==NULL, 即遍历完了
    	{
    		printf("%d->", temp->data);  //打印节点里面的data
    		temp = temp->next;          //指针的移动, 指向下一个节点
    	}
    	printf("NULL\n");
    }

    7. 释放整个链表的内存

    void freeAllNode(PNODE head)
    {
    	PNODE p = head,temp;
    	while (p != NULL)
    	{
    		temp = p->next;
    		free(p);
    		p = temp;
    	}
    }

     8.整个程序示例

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct node
    {
    	int data;
    	struct node *next;
    }*PNODE,NODE;
    void insert(PNODE head, int newdata);
    void print(PNODE head);
    PNODE init();
    void freeAllNode(PNODE head);
    int main()
    {
    	PNODE head = init();    //接受init()的返回值, 即指向了temp
    	for (int i = 0; i < 10;i++)
    	 insert(head,i);
    	print(head);
            freeAllNode(head);
    	return 0;
    }
    PNODE init()
    {
    	PNODE temp = (PNODE)malloc(sizeof(NODE));
    	temp->next = NULL;
    	return temp;
    }
    void insert(PNODE head,int newdata)
    {
    
    	PNODE temp=(PNODE)malloc(sizeof(struct node));
    	temp->data = newdata;
    	//头插
    	temp->next = head->next;
    	head ->next= temp;
    #if 0
    	//尾插
    	PNODE p; // = (PNODE)malloc(sizeof(NODE)); //相应的这里p不需要申请空间
    	p = head;
    	while (p->next != NULL) p = p->next;
    	p->next = temp;
    	temp->next = NULL;
    #endif
    }
    void print(PNODE head)
    {
    	PNODE temp=head->next;
    	while (temp!=NULL)
    	{
    		printf("%d->", temp->data);
    		temp = temp->next;
    	}
    	printf("NULL\n");
    }
    void freeAllNode(PNODE head)
    {
    	PNODE p = head,temp;
    	while (p != NULL)
    	{
    		temp = p->next;
    		free(p);
    		p = temp;
    	}
    }

    9.打印结果

    9->8->7->6->5->4->3->2->1->0->NULL
    请按任意键继续. . .
    

     

    展开全文
  • 创建Mysql:User用户,Order订单,Orderdetail订单详情,item商品 个用户对应多个订单,个订单只能对应个用户;个订单对应多个订单详情,个订单详情只对应个订单;个订单详情只对应个商品...

    创建Mysql表:User用户表,Order订单表,Orderdetail订单详情,item商品表

    一个用户对应多个订单,一个订单只能对应一个用户;一个订单对应多个订单详情,一个订单详情只对应一个订单;一个订单详情只对应一个商品,一个商品可以包括在多个订单详情中;所以,用户和商品之间是多对多关系

    CREATE TABLE `user` (
      `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户id(主键)',
      `username` varchar(32) NOT NULL COMMENT '客户名称',
      `birthday` date DEFAULT NULL COMMENT '客户生日',
      `sex` char(1) DEFAULT NULL COMMENT '客户性别',
      `address` varchar(256) DEFAULT NULL COMMENT '客户地址',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
    CREATE TABLE `orders` (
      `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户id(主键)',
      `user_id` bigint(32) NOT NULL COMMENT '下单客户id(外键)',
      `number` varchar(32) NOT NULL COMMENT '订单号',
      `createtime` datetime NOT NULL COMMENT '创建时间',
      `note` varchar(32) DEFAULT NULL COMMENT '备注',
      PRIMARY KEY (`id`),
      KEY `FK_user` (`user_id`),
      CONSTRAINT `FK_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
    CREATE TABLE `orderdetail` (
      `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT 'id(主键)',
      `order_id` bigint(32) NOT NULL COMMENT '订单id',
      `item_id` bigint(32) NOT NULL COMMENT '商品id',
      `item_num` bigint(32) DEFAULT NULL COMMENT '商品购买数量',
      PRIMARY KEY (`id`),
      KEY `order_id` (`order_id`),
      KEY `orderdetail_ibfk_2_idx` (`item_id`),
      CONSTRAINT `orderdetail_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`),
      CONSTRAINT `orderdetail_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `item` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8
    CREATE TABLE `item` (
      `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT 'id(主键)',
      `name` varchar(32) NOT NULL COMMENT '商品名称',
      `price` float(10,1) NOT NULL COMMENT '商品价格',
      `detail` text COMMENT '商品描述',
      `pic` varchar(512) DEFAULT NULL COMMENT '商品图片',
      `createtime` datetime DEFAULT NULL COMMENT '生产日期',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

     

    展开全文
  • 一对一的关系最简单,一个实体创建一张就行了; 一对多和多对一的关系建表原则是一样的,在多的一方用外键列引用‘一’的一方的主键,来保证两者之间的联系; 多对多的关系,就是新创建一张中间,以保证二者...

    一对一的关系最简单,一个实体创建一张表就行了;

    一对多和多对一的关系建表原则是一样的,在多的一方用外键列引用‘一’的一方的主键,来保证两者之间的联系;

    多对多的关系,就是新创建一张中间表,以保证二者之间的联系。

    展开全文
  • 在model中创建学生,信息(个学生对应个信息),如下; from django.db import models # Create your models here. #创建学生 class Student(models.Model):  #创建名字字段 sname = models.CharField...

    在model中创建学生表,信息表(一个学生对应一个信息),如下;

    from django.db import models
    
    # Create your models here.
    
    #创建学生表
    class Student(models.Model):
        #创建名字字段
        sname = models.CharField(max_length=30)
        #重写__str__方法,方便观察数据
        def __str__(self):
            return self.sname
        
        class Meta:
             #指定表名
            db_table = 'student'
    #创建信息表
    class Archive(models.Model):
        #创建电话字段
        phone = models.CharField(max_length=11)
        #创建一对一关系,Archive为从表,Student为主表
        student = models.OneToOneField(Student,on_delete=models.PROTECT)
    
        def __str__(self):
            return self.phone
    
        class Meta:
            db_table = 'archive'
    
    
    正向查询 由主表查从表
    def get_archive_by_student(request):
        #获取主表中的一条对象数据
        student = Student.objects.get(pk=4)
        print(student)
        # 从表是类名的小写
        #直接调用student.archive就可以得到student对应的从表中的数据
        print(student.archive)
        return HttpResponse("查看学生档案")

    总结:基本语法:主表对象名.从表类名小写

    # 反向查询 由从表查主表
    def get_student_by_archive(request):
        archive = Archive.objects.get(pk=1)
        # 主表名是类名小写
        print(archive.student)
    
        return HttpResponse("由档案查看学生")

    总结:与正向查询一个意思

    跨关系查询
    def loopup(request):
        # 根据学生查档案
        archive = Archive.objects.filter(student__id=10)
    
        #由档案查学生
        student = Student.objects.filter(archive__phone__exact='874438251')
        return HttpResponse(student)

    总结:基本语法:

    主查从

    从表类名.objects.filter(主表类名小写__属性__比较符='****')

    从查主:

    主表类名.objects.filter(从表类名小写__属性__比较符='*****')

     

    展开全文
  • 整个空间进行加密,空间中的所有对象都是加密的,例如 在加密空间上创建一的所有字段都是加密状态,适用Oracle11gR2以上版本。 空间加密数据的优点:不会再收到字段加密的限制,例如 字段类型,...
  • entityBuilder.HasOne(m => m.ManageRole) .WithOne() .HasForeignKey(m => m.ManageRoleId) .HasPrincipalKey(r => r.Id);将会生成如下结构
  • 在modes中创建类,如下: from django.db import models ...#构建team,作为主 class Team(models.Model):  #创建名字属性 tname = models.CharField(max_length=20) #重写__str__方法,方便观看结果 ...
  • 创建及关系-一对一对多: 用户和订单 --创建用户 create table user( id int primary key auto_increment, username varchar(20) ); --创建订单 create table orders( id int prim.....
  • 本案例中是个用户注册的案例,其中涉及到兴趣爱好这个复选框的,处理方式就是创建一个兴趣爱好,使用户表()兴趣爱好(多)的方式存储 index.html代码 <!DOCTYPE html> 用户注册 ...
  • 应用场景:从照片中找出包含有用户人脸的照片,并保存该照片中...创建表 GreenDao托管地址:https://github.com/greenrobot/greenDAO 官方文档:http://greenrobot.org/greendao/documentation/updating-to-gr...
  • 学习完mysql语句,从创建数据库数据的增删改查 目录 数据库练习 DDL语句 创建库 二、创建表 三、修改 DML语句 、增 、删 二、改 四、查 DDL语句 创建库 1、创建一个名称为db_...
  • 1.建立数据 # Author : Xuefeng import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DATE, ...
  • SQL创建表一对多、多对多)

    千次阅读 2018-11-19 19:43:58
    1.客户和联系人(一对多) CREATE TABLE `customer` ( `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)', `cust_...
  • class Child(models.Model): name = models.CharField(max_length=30) class Meta: ...OneToOneField 可以直接把 child整张存进 man 的 child 字段里 查询 man.child 就能查到 Child 数据 class Ma...
  • sql语句中为表创建一个别名

    万次阅读 2016-11-20 12:26:56
    有时候,在数据库中的进行操作的时候,发现表名比较冗长,这时候我们就需要对表创建一个别名,别名的关键字为as(也可以不加) 。    现在有个student,结构如下: 现在我认为student太长了 我不想...
  • 进行分区的案例(按月) 0.备份的数据 create table LUROU_bkup01 as select * from DC.LUROU 1.直接创建分区,从原来的select所有数据过来。 数据LUROU按月进行分区,划分范围的字段为
  • verbose_name_plural = u'信息' class UserInfo(models.Model): name = models.CharField(verbose_name=u'姓名', max_length=100) # 0 男;1 女;2 其他 sex = models.SmallIntegerField(verbose_name=u'...
  • #Python中创建一个字符串映射

    千次阅读 2018-10-06 22:02:38
    26.创建一个字符串映射maketrans ...一对一替换,一个字符对应另外一个字符。替换不可控 t46 =str.maketrans("good","abcd") print(t46) #(输出) {103: 97, 111: 99, 100: 100}...
  • 在这里整理一下Oracle中...1. 创建表 1.1 直接创建 create table 表名 ( field1 type[(size)] [index1], field2 type[(size)] [index2], ......, [[multifieldindex],...] ) 示例: CREATE TABLE T_YGY_DEMO_BOOK
  • MySQL如果不存在创建

    万次阅读 2017-03-23 17:40:43
    在前几天从同事那里拿来demo研究的时候,发现数据库名,部分都一样,只是有的没有,这时如果需要把两个人的数据库和成个数据库,就需要处理判断一张不存在,如存在则不改动,若不存在,则执行创建。...
  • 创建表 create table table_name( name1 type1, name2 type2, name3 type3, )character set 字符集 collate 校验规则 engine 存储引擎 说明: 1.name表示列名 2.type表示列的类型 3.charater set...
  • navicat数据库数据创建与操作 、链接本地mysql 二、创建数据库 三、创建数据及字段 四、插入数据 五、查看数据 六、操作数据 1.增加数据 2.删除数据 3.修改数据 4.查找数据 ...
  • 在开发中,针对一对多的关系,一方称之为主表或一表,多方称之为多表或从表。 为了表示一对多的关系,一般会在多表的一方添加一个字段,字段名称自定义(建议:主表的名称_id) 字段类型一般和主表的主键的类型...
  • 、运行环境说明 1、电脑环境:win10 2、数据库软件:SQL Server 2008 R2 二、经典例题原型 题目:设有个 SPJ ...应商 S 由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(C

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,964
精华内容 12,385
关键字:

一对一表创建