C语言基础——数据结构
2018-02-02 19:54
351 查看
线性表
线性表的定义 定义n个数据元素的有限序列,记作(a1, a2, …, an)ai 是表中数据元素,n 是表长度线性表的特点 除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。 除最后一个元素外其他每一个元素有一个且仅有一个直接后继。顺序表的定义和特点定义 将线性表中的元素相继存放在一个连续的存储空间中。 可利用一维数组描述存储结构特点 线性表的顺序存储方式遍历 顺序访问, 可以随机存取 内存存储方式:小端:低位存低地址 大端:高位存低地址链表:特点:1.每个元素(表项)由结点(Node)构成 2.线性结构 3.结点可以连续,可以不连续存储 4.结点的逻辑顺序与物理顺序可以不一致 5.表可扩充单链表:typedef char ListData; typedef struct node //链表结点 { ListData data; //结点数据域 struct node * link; //结点链域 } ListNode; typedef ListNode * LinkList; LinkList first; //链表头指针插入第一个:
newnode->next = first first = newnode
插入链表中间:
newnode->next = p->next p->next = newnode
删除节点:
q = p->link; p->link = q->link; free q;
链表逆序(重要)(笔试考):
int ReverseLinkList( LinkList A ){if (A==NULL) return 0;ListNode *p = A->next;A->next = NULL;while (p!=NULL){ListNode *q = p;p = p->next;q->next = A->next;A->next = q;}return 1;}
循环链表:循环链表是单链表的变形。循环链表最后一个结点的 link指针不 为NULL,而是指向了表的前端。为简化操作,在循环链表中往往加入表头结点。循环链表的特点是:只要知道表中某一结点的地址,就可搜寻到所有其他结点的地址。一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点。node *p; // 当前节点node *q;q = p -> next;p.data = q.data; // 复制q节点到pp -> next = q -> next; // 删除qfree(q);
相关文章推荐
- 数据结构的C语言基础
- 数据结构______C语言基础了解篇
- C语言基础—数据结构之单向循环链表和双向循环链表
- 嵌入式Linux C语言基础——ARM Linux内核常见数据结构
- 数据结构-栈的相关理解和C语言基础实现
- 嵌入式Linux C语言基础——ARM Linux内核常见数据结构
- 数据结构c语言基础
- 黑马程序员——零基础学习iOS开发——03 c语言基础语法:关键字、标示符、注释、数据结构、变量、变量内存分析、scanf函数
- soot基础 -- soot的数据结构与java语言的结构
- 【C语言基础】关于数据结构顺序表动态内存开辟的介绍
- 嵌入式linux工程师面试题目C语言基础部分(转)
- 黑马程序员-Java语言基础2
- Java语言基础学习笔记(五)
- 郝斌的C语言基础 103 是否存在多维数组
- html和css基础知识复习(1)--四种语言的联系与区分,HTML语义化,id和name
- 今天复习了C语言基础,温故而知新
- <转载>PL/SQL语言基础
- Delphi7语言基础20130717-1
- R语言在线地图神器:Leaflet for R包(二)基础底图
- Java语言程序设计-进阶篇(五)算法基础