尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

C语言-链表例程

C语言-链表例程 #includestdio.h#includestdlib.htypedefstructLNode{intdata;// 数据域structLNode*next;// 指针域}LNode;// 尾插法创建不带头结点 LNode*createTailNoHead(){LNode*LNULL;// 空链表LNode*tailNULL;// 始终指向表尾结点intn;scanf(%d,n);for(inti0;in;i){LNode*s(LNode*)malloc(sizeof(LNode));scanf(%d,s-data);s-nextNULL;if(LNULL){// 也可写 if(tail NULL)Ltails;}else{tail-nexts;tails;}}returnL;}// 尾插法创建带头结点 LNode*createTailWithHead(){LNode*L(LNode*)malloc(sizeof(LNode));// 头结点不存有效数据L-nextNULL;LNode*tailL;// 尾指针初始指向头结点intn;scanf(%d,n);for(inti0;in;i){LNode*s(LNode*)malloc(sizeof(LNode));scanf(%d,s-data);s-nextNULL;tail-nexts;tails;}returnL;}// 头插法创建带头结点 LNode*createHeadWithHead(){LNode*L(LNode*)malloc(sizeof(LNode));// 头结点L-nextNULL;intn;scanf(%d,n);for(inti0;in;i){LNode*s(LNode*)malloc(sizeof(LNode));scanf(%d,s-data);s-nextL-next;L-nexts;}returnL;}// 遍历输出链表 voidprintList(LNode*L){// 如果不带头结点LNode*pL;// 如果带头结点用下面这句// LNode *p L-next;while(p!NULL){printf(%d ,p-data);pp-next;}printf(\n);}// 释放链表 voidfreeList(LNode*L){// 如果不带头结点LNode*pL;// 如果带头结点用// LNode *p L;while(p!NULL){LNode*qp;pp-next;free(q);}}intmain(){// 示例尾插法不带头LNode*L1createTailNoHead();printList(L1);freeList(L1);// 示例尾插法带头// LNode *L2 createTailWithHead();// printList(L2);// freeList(L2);// 示例头插法带头// LNode *L3 createHeadWithHead();// printList(L3);// freeList(L3);return0;}尾插不带头if(LNULL){Ltails;}else{tail-nexts;tails;}尾插带头:LNode*L(LNode*)malloc(sizeof(LNode));L-nextNULL;LNode*tailL;// 尾指针指向头结点// 每次插入新结点 stail-nexts;// 头/尾结点 next 指向新结点tails;// 尾指针移动到新结点s-nextNULL;// 新结点成为尾结点头插带头s-nextL-next;L-nexts;
返回列表