什么是数据结构?答案众说纷纭,有人说“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出”,也有人说“数据结构是计算机中存储、组织数据的方式。”
数据结构包括数据对象在计算机中的组织方式,还与一系列加在数据对象上的操作相关联。
链表:
是一种常见而非常重要的基础数据结构,也是实现复杂数据结构的重要手段。不按照线性的顺序存储数据,结点中保存先一个结点的地址。
链表可以比较灵活的进行内存动态管理,但失去了数组方便随机存取的优点,同时空间开销比较大
链表类型:单向,双向,循环
单向:结点存放数据,下个结点的地址,head变量存放链表首结点地址,最后一个结点地址部分NULL
typedef struct Node *ptrtonode
struct Node{
ElementType Data;
ptrtonode next;
}
-> 左边是结构体指针,右边是结构体成员,因此p->next 的含义是p指针指向结构体变量的next数据域(一般该数据域存放后继结点的地址)
p=q->next 使p指向q->next,p的值被改变,变为q->next
q->next=p 使p的值赋给q->next,q->next的值被改变,变为p
掌握基本操作:插入、删除、遍历
双向链表:处理时要在链表基础上多处理指针前列
typedef struct DNode *ptrtonode
struct Node{
ElementType Data;
ptrtonode next;ptrtonode previous;
}
链表逆置
List Reverse(list L)
{ptrtonode old_head,new_head,temp
old_head=L;//初始化旧表头为L
new_head=NULL;//初始化逆转后新表头为空
while(old_head)//当旧表头不为空时
{temp=old_head->next;
old_head->next=new_head;
new_head=old_head;//将当前旧表头转化为新表头
old_head=temp;//更新旧表头
}
L=new_head;
return L//更新L
}
}