码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构之---c语言实现循环单链表操作

时间:2015-05-15 17:45:11      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

//=========杨鑫========================//
//循环单链表的实现
#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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!