链表建立

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档