当前位置: 首页 > 编程笔记 >

数据结构 C语言实现循环单链表的实例

岳炎彬
2023-03-14
本文向大家介绍数据结构 C语言实现循环单链表的实例,包括了数据结构 C语言实现循环单链表的实例的使用技巧和注意事项,需要的朋友参考一下

数据结构 C语言实现循环单链表的实例

实例代码:

//=========杨鑫========================// 
//循环单链表的实现 
#include <stdio.h> 
#include <stdlib.h> 
  
typedef int ElemType; 
//定义结点类型  
typedef struct Node 
{ 
  ElemType data;         
  struct Node *next;       
}Node,*LinkedList; 
int count = 0; 
 
 
//1、单循环链表的初始化 
LinkedList init_circular_linkedlist() 
{ 
  Node *L; 
  L = (Node *)malloc(sizeof(Node));  
  if(L == NULL)             
    printf("申请内存空间失败\n"); 
  L->next = L;           
} 
 
 
 
//2、循环单链表的建立 
LinkedList creat_circular_linkedlist() 
{ 
  Node *L; 
  L = (Node *)malloc(sizeof(Node));   
  L->next = L;            
  Node *r; 
  r = L;                 
  ElemType x;              
  while(scanf("%d",&x)) 
  { 
    if(x == 0) 
      break; 
    count++; 
    Node *p; 
    p = (Node *)malloc(sizeof(Node));   
    p->data = x;             
    r->next = p;             
    r = p; 
  } 
  r->next = L;  
  return L;   
} 
  
//4、循环单链表的插入,在循环链表的第i个位置插入x的元素 
LinkedList insert_circuler_linkedlist(LinkedList L,int i,ElemType x) 
{ 
  Node *pre;                     
  pre = L; 
  int tempi = 0; 
  for (tempi = 1; tempi < i; tempi++) 
    pre = pre->next;               
  Node *p;                      
  p = (Node *)malloc(sizeof(Node));  
  p->data = x;  
  p->next = pre->next; 
  pre->next = p; 
  return L;               
}  
 
 
//5、循环单链表的删除,在循环链表中删除值为x的元素 
LinkedList delete_circular_linkedlist(LinkedList L,ElemType x) 
{ 
  Node *p,*pre;                  
  p = L->next; 
  while(p->data != x)               
  {   
    pre = p;  
    p = p->next; 
  } 
  pre->next = p->next;               
  free(p); 
  return L; 
}  
 
 
int main() 
{ 
  int i; 
  LinkedList list, start; 
  printf("请输入循环单链表的数据, 以0结束!\n");  
  list = creat_circular_linkedlist(); 
  printf("循环单链表的元素有:\n"); 
  for(start = list->next; start != NULL; start = start->next) 
  { 
    if(count== 0) 
    { 
        break; 
    } 
    printf("%d ", start->data); 
    count--; 
  } 
     
  printf("\n"); 
  return 0; 
}  

如图:

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 本文向大家介绍C语言数据结构之循环链表的简单实例,包括了C语言数据结构之循环链表的简单实例的使用技巧和注意事项,需要的朋友参考一下  C语言数据结构之循环链表的简单实例 实例代码: 第二种方法: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 本文向大家介绍C数据结构循环链表实现约瑟夫环,包括了C数据结构循环链表实现约瑟夫环的使用技巧和注意事项,需要的朋友参考一下 C数据结构循环链表实现约瑟夫环 本文代码均在turbo C 2.0 的环境下运行通过,并得到正确结果,本程序为用循环链表实现约瑟夫环,即有m个人站成一个圆环,从某人(队列第一个)开始报数,约定从某数开始的第n个人出列,他的下一个再从一开始报,然再一个报道n的人出列,本程序结果

  • 本文向大家介绍C语言单循环链表的表示与实现实例详解,包括了C语言单循环链表的表示与实现实例详解的使用技巧和注意事项,需要的朋友参考一下 1.概述: 对于一个循环链表来说,其首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,可以选择开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。再来看另一种方法,循环链表可以被视为“无头无尾”。这种列表很利于节约数据存储

  • 本文向大家介绍C语言单链表的实现,包括了C语言单链表的实现的使用技巧和注意事项,需要的朋友参考一下 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表结构: SList.h SList.cpp Test.cpp 以上内容是小编给大家介绍的C语言单链表的实现代码,希望对大家有所帮助!

  • 本文向大家介绍详解数据结构C语言实现之循环队列,包括了详解数据结构C语言实现之循环队列的使用技巧和注意事项,需要的朋友参考一下 本文讲的是循环队列,首先我们必须明白下面几个问题 循环队列的基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零; (2)当队列不为空时,front指向队列的第一

  • 本文向大家介绍C语言实现数据结构和双向链表操作,包括了C语言实现数据结构和双向链表操作的使用技巧和注意事项,需要的朋友参考一下 数据结构  双向链表的实现 双向链表中的每一个结点都含有两个指针域,一个指针域存放其后继结点的存储地址,另一个指针域则存放其前驱结点的存储地址。 双向链表结点的类型描述:     其中,prior域存放的是其前驱结点的存储地址,next域存放的是其后继结点的存储地址。 双