如何用C语言编写循环单链表的数据结构实例?

2026-05-19 23:001阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计574个文字,预计阅读时间需要3分钟。

如何用C语言编写循环单链表的数据结构实例?

c#include #include

// 定义循环单链表节点结构体typedef struct Node { int data; struct Node* next;} Node;

// 创建循环单链表Node* createCircularList(int* arr, int size) { if (size==0) return NULL;

Node* head=(Node*)malloc(sizeof(Node)); head->data=arr[0]; head->next=head;

Node* current=head; for (int i=1; i data=arr[i]; newNode->next=head; current->next=newNode; current=newNode; }

return head;}

// 打印循环单链表void printCircularList(Node* head) { if (head==NULL) return;

Node* current=head; do { printf(%d , current->data); current=current->next; } while (current !=head); printf(\n);}

// 释放循环单链表内存void freeCircularList(Node* head) { if (head==NULL) return;

Node* current=head; Node* temp; do { temp=current; current=current->next; free(temp); } while (current !=head);}

int main() { int arr[]={1, 2, 3, 4, 5}; int size=sizeof(arr) / sizeof(arr[0]);

Node* head=createCircularList(arr, size); printCircularList(head); freeCircularList(head);

return 0;}

数据结构 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语言编写循环单链表的数据结构实例?

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

标签:实例

本文共计574个文字,预计阅读时间需要3分钟。

如何用C语言编写循环单链表的数据结构实例?

c#include #include

// 定义循环单链表节点结构体typedef struct Node { int data; struct Node* next;} Node;

// 创建循环单链表Node* createCircularList(int* arr, int size) { if (size==0) return NULL;

Node* head=(Node*)malloc(sizeof(Node)); head->data=arr[0]; head->next=head;

Node* current=head; for (int i=1; i data=arr[i]; newNode->next=head; current->next=newNode; current=newNode; }

return head;}

// 打印循环单链表void printCircularList(Node* head) { if (head==NULL) return;

Node* current=head; do { printf(%d , current->data); current=current->next; } while (current !=head); printf(\n);}

// 释放循环单链表内存void freeCircularList(Node* head) { if (head==NULL) return;

Node* current=head; Node* temp; do { temp=current; current=current->next; free(temp); } while (current !=head);}

int main() { int arr[]={1, 2, 3, 4, 5}; int size=sizeof(arr) / sizeof(arr[0]);

Node* head=createCircularList(arr, size); printCircularList(head); freeCircularList(head);

return 0;}

数据结构 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语言编写循环单链表的数据结构实例?

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

标签:实例