如何用C语言编写循环单链表的数据结构实例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计574个文字,预计阅读时间需要3分钟。
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; }
如图:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文共计574个文字,预计阅读时间需要3分钟。
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; }
如图:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

