[数据结构]头插法与尾插法

来源:互联网 发布:知乎年度吐槽精选 编辑:程序博客网 时间:2024/06/11 18:57
#include "stdio.h"#include "stdlib.h"typedef struct List {int data; //数据域struct List *next; //指针域} List;void TailCreatList(List *L) //尾插法建立链表{List *s, *r;//s用来指向新生成的节点。r始终指向L的终端节点。r = L; //r指向了头节点,此时的头节点是终端节点。for (int i = 0; i < 10; i++) {s = (struct List*) malloc(sizeof(struct List));//s指向新申请的节点s->data = i; //用新节点的数据域来接受ir->next = s; //用r来接纳新节点r = s; //r指向终端节点}r->next = NULL; //元素已经全部装入链表L中//L的终端节点指针域为NULL,L建立完成}void HeadCreatList(List *L) //头插法建立链表{List *s;                          //不用像尾插法一样生成一个终端节点。L->next = NULL;for (int i = 0; i < 10; i++) {s = (struct List*) malloc(sizeof(struct List));s->data = i;s->next = L->next; //将L指向的地址赋值给S;//头插法与尾插法的不同之处主要在此,   //s所指的新节点的指针域next指向L中的开始节点L->next = s;       //头指针的指针域next指向s节点,使得s成为开始节点。}}void DisPlay(List *L) {    //打印节点List *p = L->next;while (p != NULL) {printf("%d ", p->data);p = p->next;}printf("\n");}int main() {List *L1, *L2;L1 = (struct List*) malloc(sizeof(struct List));L2 = (struct List*) malloc(sizeof(struct List));HeadCreatList(L1);DisPlay(L1);TailCreatList(L2);DisPlay(L2);}

原创粉丝点击