时间:2021-05-20
本文实例为大家分享了C语言实现循环链表的具体代码,供大家参考,具体内容如下
注意事项:
1、循环链表设置尾指针。由于在链表的操作过程中,尾指针会不断变化,所以在一些函数的形参中都设置指向头指针的指针。以及链表的结束判断条件变成q是否等于尾指针。
2、注意传递的实参需要取地址
3、循环链表的优势在于双链表合并,以及实现尾插法简单(首先新建结点指向头结点,然后把尾指针的next域指向该新建结点)
4、在创建链表时,使用尾插法,而不是用头插法(因为头插法很难去更新尾指针,使得最后尾指针还需额外更新一次),直接用头插法建立的是头指针,而非尾指针
代码:
#include<stdio.h>#include<stdlib.h> typedef struct Node{ int data; struct Node * next;}Node, *LinkList; LinkList Creat();void Destroy(LinkList *L);void Insert(LinkList *L, int val, int index);void Delete(LinkList *L, int index);void Traverse(LinkList L); int main(){ LinkList L = Creat(); Traverse(L); Insert(&L, 1, 5); printf("After inserting is :\n"); Traverse(L); printf("After deleting is :\n"); Delete(&L, 2); Traverse(L); Destroy(&L); Traverse(L);} LinkList Creat(){ LinkList L = (LinkList)malloc(sizeof(Node));//用L指针指向新建结点,这里L还不算尾指针 int n; L->data = -1; L->next = L;//头结点的指针域指向头结点, 注意!这里是对尾指针的初始化。 printf("Please enter the number you want input:(>5)"); scanf_s("%d", &n); printf("input the number:\n"); for (int i = 0; i < n; i++) { LinkList p = (LinkList)malloc(sizeof(Node)); scanf_s("%d", &p->data); p->next = L->next; L->next = p; L = p; } return L;//返回尾结点的指针}void Destroy(LinkList *L){ LinkList q = (*L)->next->next; LinkList p; (*L) = (*L)->next; while (q != (*L)) { p = q->next; free(q); q = p; } (*L)->next = (*L);}void Insert(LinkList *L, int val, int index){ LinkList p = (LinkList)malloc(sizeof(Node)); p->data = val; LinkList q = (*L)->next; for (int i = 1; q != (*L) && i < index; i++) q = q->next; p->next = q->next; q->next = p; if (p == (*L)) (*L) = p;}void Delete(LinkList *L, int index){ LinkList q = (*L)->next, p; for (int i = 0; i < index; i++) q = q->next; p = q->next; q->next = p->next; free(p);}void Traverse(LinkList L){ LinkList q = L->next->next;//这才是首元结点 while (q != L) { printf("%d->", q->data); q = q->next; } printf("NULL\n");}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
数据结构C语言实现循环单链表的实例实例代码://=========杨鑫========================////循环单链表的实现#include#
C语言实现单链表实现方法链表和我们之前实现过的顺序表一样,都是简单的数据结构,链表分为单向链表、双向链表、循环链表。而单向链表又分为两种实现方法,一种为带头节点
本文实例讲述了C语言实现的循环单链表功能。分享给大家供大家参考,具体如下:SClist.h#ifndef__SCLIST_H__#define__SCLIST_
C语言实现简登录和注册功能,供大家参考,具体内容如下C语言实现注册登录使用链表使用文件版本二:利用链表此版本使用的链表,第一个版本使用的是数组数组版本连接这里我
C语言数据结构之使用链表模拟栈的实例以下是“使用链表模拟栈”的简单示例:1.用C语言实现的版本#include#includetypedefchardataty