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

时间:2021-09-28 08:15:54

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

实例代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//=========杨鑫========================//
//循环单链表的实现
#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语言实现循环单链表的实例

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

原文链接:http://blog.csdn.net/u012965373/article/details/45746803