circular.cpp

来自「用C语言编写实现数据结构方面的例子」· C++ 代码 · 共 190 行

CPP
190
字号
#include <stdio.h>
#include <malloc.h>

typedef struct LNode
{
	int data;
	struct LNode *next;
};

typedef struct Circular
{
	int data;
	struct Circular *next;
};

void CircularSetNull(struct Circular **p)
{
	*p=NULL;
}

int CircularLength(struct Circular **p)
{
	struct Circular *q;
	q=*p;
	int n=0;

	if (q!=NULL)
	{
		n++;
		q=q->next;	
	}
	return n;
}

void CircularGet(struct Circular **p,int i)
{
	int j=1;
	struct Circular *q=*p;
	if (i<1)
	{
		printf("参数错误!");
	}
	else
	{
		j++;
		q=q->next;
	}

	if (q!=NULL)
	{
		printf("元素:%d",q->data);
	}
	else
		printf("位置参数不正确!\n");
}

int CircularLocate(struct Circular **p,int x)//元素定位
{
	int i=1;

	struct Circular *q=*p;
	if (q!=NULL && q->data!=x)
	{
		q=q->next;
		i++;
	}

	if (q==NULL)
	{
		return 0;
	}
	else
		return i;
}

void CircularInsert(struct Circular **p,int x,int i)
{
	int j=1;
	struct Circular *s,*q;

	q=*p;

	s=(struct Circular *)malloc(sizeof(struct Circular));
	s->data=x;

	if (i==1)
	{	
		s->next=q;
		*p=s;		
	}
	else
	{
		while (j<i-1 && q->next!=NULL)
		{
			j++;
			q=q->next;
		}
		if (j==i-1)
		{
		    s->next=q->next;//
			q->next=s;	  //                         
		}
		else printf("position parameter is incorrect!\n");	
	}

}

void CircularDelete(struct Circular **p,int i)//第i数删除
{
	struct Circular *q,*t;
	int j=1;

	q=*p;
	if (i==1)
	{
		t=q;
		*p=q->next;
	}
	else
	{
		while(j<i-1 && q!=NULL)
		{
			j++;
			q=q->next;
		}
		if (j==i-1 && q->next!=NULL)
		{
			t=q->next;//指向第i个
      		q->next=t->next;//第i-1与i+1连接

		}
		else printf("position parameter is incorrect!\n");

	}

	if(t=NULL)
     	free(t);
}

void CircularDisplay(struct Circular **p)
{
	struct Circular *q=*p;

	if (q==NULL)
	{
		printf("CircularLinkList is Null!");
	}
	else if (q->next==NULL)
	{
		printf("%d",q->data);

	}
	else
	{	
		while (q!=NULL)
		{
			printf("%d->",q->data);
			q=q->next;
		}
		printf("%d->",q->data);
	}

}



char a[]="abcdef";
void f(char b[])
{
	printf("%#x\n",b);
	printf("%#x\n",&b[0]);
}
void ff(char *c)
{
	printf("%#x\n",c);
	printf("%#x\n",&c[0]);
}


int main()
{


	printf("%#x\n",&a);
	printf("%#x\n",a);
	f(a);
	ff(a);

	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?