链表建立
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
/*
* 这就是表示单链表的一个结点的结构体了,
* 简单起见没有使用模板之类的复杂东西。
*/
struct Node
{
/*这个表示结点的值,这里为了简单,就用int型的吧*/
int data;
/*
* 这是指向结点结构体的一个指针,
* 这里用它指向该结点的下一个结点,
* 以此使单个的结点形成链表
*/
struct Node* next;
};/*至此链表的结点就定义完了*/
int main()
{
/*下面展示如何建立成为一个带头结点的单链表:L={12,13,21,24}*/ struct Node* head = NULL; /*这是链表的头结点*/
struct Node* p = NULL, *q = NULL; /*临时指针,建立链表时会用到*/
/*链表很短,我不用循环,直接建立,可以让你看的更清楚*/
/*建立头结点*/
head = (struct Node*)malloc(sizeof(struct Node));
/*指定结点的值*/
head->data = 12;
/*指定下一个结点,现在还没有先给NULL*/
head->next = NULL;
/*用q保存刚生成的结点*/
q = head;
/*第二个结点,建立的方法和第一个一样*/
p = (struct Node*)malloc(sizeof(struct Node));
p->data = 13;
p->next = NULL;
/*注意,此时需要调整一下上一个结点的next指针,使各结点可以连接起来*/ q->next = p;
q = p;
/*第三个结点*/
p = (struct Node*)malloc(sizeof(struct Node));
p->data = 21;
p->next = NULL;
q->next = p;
q = p;
/*第四个结点,差不多应该发现可以写成个循环了吧!*/ p = (struct Node*)malloc(sizeof(struct Node));
p->data = 24;
p->next = NULL;
q->next = p;
q = p;
/*到此链表建立完成!*/
/* 用循环来写的话就是:
* int i = 0;
* int data[] = {12, 13, 21, 24};
* for(i = 0; i < 4; i++)
* {
* p = (struct Node*)malloc(sizeof(struct Node));
* p->data = data[i];
* p->next = NULL;
* if(i == 0)
* {
* head = p;
* }
* else
* {
* q->next = p;
* }
* q = p;
* }
*/
return 0;
}