网站建设运营公司企业特色php 建网站
目录
链表
1.1 数据结构
1.2 链表分类
1.3 链表名词
1.4 函数名:malloc()
1.5 函数名字:free()
1.6 头插法&&尾插法
链表
1.1 数据结构
线性结构
顺序表: 一对一 数组
链式表: 一对一 链表
非线性结构
树结构: 一对多 树
网状结构:多对多
数据的逻辑关系+数据的物理存储+算法
1.2 链表分类
单向链表
双向链表
循环链表
1.3 链表名词
节点:每个存储单元
节点内部:
数据域:存储信息的成员
指针域:存储节点地址的指针
头节点:第一个节点,为了操作方便,数据域为空
尾节点:最后一个节点,指针域为 NULL
信息节点:存储数据的节点
头指针:保存头节点的地址
1.4 函数名:malloc()
include <stdlib.h>
函数原型:void *malloc(size_t size);
函数功能:在堆区申请空间
函数参数: size: 空间大小 --- sizeof(数据类型)
函数返回值:申请成功,返回空间地址
申请失败,返回 NULL
1.5 函数名字:free()
函数原型:void free(void *ptr);
函数功能:释放空间
1.6 头插法&&尾插法
#include <stdio.h>struct info{int class;char name[20];int id;
};
typedef struct node{struct info inf; // 数据域struct node * next; // 指针域
}Node;/*Node * head = (Node *)malloc(sizeof(Node));
memset(head, 0, sizeof(Node));head->next = (Node *)malloc(sizeof(Node));
memset(head->next, 0, sizeof(Node));*/Node * Node_Creat(void)
{Node * new = NULL;new = (Node *)malloc(sizeof(Node));if(new == NULL){perror(“malloc”);return NULL;}memset(new, 0, sizeof(Node));return new;
}int main()
{Node *head = Node_Creat();if(head == NULL){return 0;}while(1){switch(){case 1: Node_Add(head);break;}}return 0;
}void Node_Add(Node *head)
{Node * new = Node_Creat();if(new == NULL){printf(“申请失败!\n”);return ;}
//头插法
new->next = head->next;
head->next = new;
//尾插法
Node *p = head;
while(p->next!=NULL)
{p = p->next;
}
p->next = new;
scanf(“%d”, &new->inf.class);
}