数据结构 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语言实现循环单链表的实例 的全部内容, 来源链接: utcz.com/z/313949.html

回到顶部