链表(一)——创建一个最基本的单向链表
2014-07-14 21:33
295 查看
1.结点
链表中用来存储一个数据的存储单元。
一个链表至少需要由两部分组成,就是数据域和指针域,一般形式的结点定义为:
struct node
{
Elem data; //Elem类型泛指基本数据类型
struct node *next;
}
typedef struct node Elemsn;
以上两步等价于:
typedef struct node
{
Elem data;
struct node *next;
}Elemsn;
2.使用指针变量p表示结点的成员
*p.data //错误,正确为(*p).data
p->data //正确
p->next //正确
注:(.)、(->)、([])三种运算符的优先级依次递减(这三个是C语言中优先级最高的运算符)。
3.前驱结点;某个结点的前一个结点。
后继结点:某个结点的后一个结点。
单向链表的特点:
(1)有且只有一个结点无前驱,即头结点。头结点通过head指针指向。
(2)有且只有一个结点无后继,即尾结点。尾结点的next域值为NULL。
(3)除了头结点尾结点之外剩下的所有结点有且只有一个前驱,有且只有一个后继。
4.例子
example 1:创建单向链表,最基本的实现方式。
链表中用来存储一个数据的存储单元。
一个链表至少需要由两部分组成,就是数据域和指针域,一般形式的结点定义为:
struct node
{
Elem data; //Elem类型泛指基本数据类型
struct node *next;
}
typedef struct node Elemsn;
以上两步等价于:
typedef struct node
{
Elem data;
struct node *next;
}Elemsn;
2.使用指针变量p表示结点的成员
*p.data //错误,正确为(*p).data
p->data //正确
p->next //正确
注:(.)、(->)、([])三种运算符的优先级依次递减(这三个是C语言中优先级最高的运算符)。
3.前驱结点;某个结点的前一个结点。
后继结点:某个结点的后一个结点。
单向链表的特点:
(1)有且只有一个结点无前驱,即头结点。头结点通过head指针指向。
(2)有且只有一个结点无后继,即尾结点。尾结点的next域值为NULL。
(3)除了头结点尾结点之外剩下的所有结点有且只有一个前驱,有且只有一个后继。
4.例子
example 1:创建单向链表,最基本的实现方式。
#include <stdio.h> #include <malloc.h> #define NULL 0 typedef struct node{ int data; struct node *next; //不能使用ElemSN }ElemSN; int main() { ElemSN *head, *p; int i, ms;/*ms用来存放结点的个数*/ int x; printf("Please input node number:"); scanf("%d", &ms); head = p = (ElemSN *)malloc(sizeof(ElemSN)); printf("Please input data:"); scanf("%d", &x); head->data = x; head->next = NULL;/*创建第一个结点,因为是头结点,和后面的结点有些不一样所以单独写出来*/ for(i = 0; i < ms-1; i++)/*创建后面的ms-1个结点*/ { p->next = (ElemSN *)malloc(sizeof(ElemSN)); printf("Please input data:"); scanf("%d", &x); p->next->data = x; p->next->next = NULL; p = p->next; } for(p = head; p != NULL; p = p->next) { printf("%d ", p->data); } printf("\n"); }
相关文章推荐
- 用头插、尾插、按顺序插入创建一个不带头节点的链表,栈的基本操作
- 单向链表的基本操作-创建、插入、删除
- 创建一个简单的单向链表并将其倒序输出
- 链表(二)——单向链表的基本操作(创建、删除、打印、结点个数统计)
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- c++之链表篇1:单向链表的创建,打印,删除,插入,销毁等基本操作
- 单向循环链表的创建及基本操作的实现
- 一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用
- 将一个单向链表反向链接
- Windows Workflow RC HOL学习笔记(六):创建一个基本的活动
- 转载的标准文档:C语言实现一个简单的单向链表list
- 《Delphi 算法与数据结构》学习与感悟[6]: 一个简单的"单向链表"
- VC6.0如何创建一个基本的Win32 DLL工程
- 用VS2005创建一个基本的Atlas Web应用
- 一步一步学Flex系列(1):创建一个基本的Flex应用
- 一个单向链表,并实现栈和队列
- 判断一个单向链表是否有环,算法证明
- Windows Workflow RC HOL学习笔记(六):创建一个基本的活动
- Expression Blend一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用
- C语言实现一个简单的单向链表list