C语言单向链表定义和数据查找

  1. 使用环境 

2. 代码

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>


#define NUM 100


typedef struct Node { // 使用Node作为结构体标签
    int data;
    struct Node *ptr; // 指针成员使用结构体标签
} NODE; // 现在可以typedef为NODE


/*创建链表*/
 NODE *createlinktb(int num)
 {
 	NODE *ptbhead=NULL;
	NODE *ptbbak=NULL;	
	NODE *ptbcur=NULL;
	
	ptbhead = (NODE *)malloc(sizeof(NODE));
	ptbbak = ptbhead;		
	ptbhead->data = 0;
			
	for(int i=1;i<NUM;i++)
	{	
		ptbcur = (NODE *)malloc(sizeof(NODE));	
		ptbcur->data = 2*i*i+1;			
		ptbbak->ptr = ptbcur;
		ptbbak = ptbcur;	
		if(i==NUM-1)
		{
			ptbcur->ptr=NULL;
		}			
	}	
		
	return ptbhead;	
 }


/*打印链表*/
void printlinktb(NODE *ptbhead)
{
	NODE *ptbcur=ptbhead;
	SetConsoleOutputCP(65001);	
	
	for(int i=0;;i++)
	{
		printf("第%d个节点的值为%d,地址为%d\n",i,ptbcur->data,ptbcur);
		ptbcur=ptbcur->ptr;	
		if(ptbcur==NULL)
		{
			printf("当前节点数为最后一个:%d",i);
			break;	
		}
	}	
}


int main(int argc, char *argv[])
{

	NODE *phead=NULL;
	NODE *pend=NULL;	
	NODE *pbak=NULL;	
	NODE *pcur=NULL;	

	phead = createlinktb(NUM);
	printlinktb(phead);		

	printf("\n\n\n");
	int var;
	printf("请输入你要查找的数字:\n");
	scanf("%d",&var);
	printf("你输入的数字是:%d\n\n\n",var);
	
	
	pcur = phead;
	int t;	
	for(t=0;t<NUM;t++)
	{
		if(var==pcur->data)
			break;

		pcur=pcur->ptr;	
	}
	if(t==NUM)
	{
		printf("链表中没有你输入的数据\n");
	}
	else
	{
		printf("你输入的数在第%d个,值为%d\n",t,pcur->data);	
	}	

	return 0;
}


运行结果:
第0个节点的值为0,地址为13837280
第1个节点的值为3,地址为13837312
第2个节点的值为9,地址为13837344
第3个节点的值为19,地址为13837376
第4个节点的值为33,地址为13837408
第5个节点的值为51,地址为13837440
第6个节点的值为73,地址为13837472
第7个节点的值为99,地址为13837504
第8个节点的值为129,地址为13837536
第9个节点的值为163,地址为13837568
第10个节点的值为201,地址为13837600
第11个节点的值为243,地址为13837632
第12个节点的值为289,地址为13837664
第13个节点的值为339,地址为13837696
第14个节点的值为393,地址为13838416
第15个节点的值为451,地址为13838192
第16个节点的值为513,地址为13838160
第17个节点的值为579,地址为13838256
第18个节点的值为649,地址为13838480
第19个节点的值为723,地址为13837904
第20个节点的值为801,地址为13838224
第21个节点的值为883,地址为13838128
第22个节点的值为969,地址为13838320
第23个节点的值为1059,地址为13838704
第24个节点的值为1153,地址为13837936
第25个节点的值为1251,地址为13837968
第26个节点的值为1353,地址为13838288
第27个节点的值为1459,地址为13838000
第28个节点的值为1569,地址为13838512
第29个节点的值为1683,地址为13838032
第30个节点的值为1801,地址为13838352
第31个节点的值为1923,地址为13838448
第32个节点的值为2049,地址为13838064
第33个节点的值为2179,地址为13838384
第34个节点的值为2313,地址为13838544
第35个节点的值为2451,地址为13838576
第36个节点的值为2593,地址为13838096
第37个节点的值为2739,地址为13837872
第38个节点的值为2889,地址为13838608
第39个节点的值为3043,地址为13837808
第40个节点的值为3201,地址为13838640
第41个节点的值为3363,地址为13838672
第42个节点的值为3529,地址为13837840
第43个节点的值为3699,地址为13858464
第44个节点的值为3873,地址为13858496
第45个节点的值为4051,地址为13859904
第46个节点的值为4233,地址为13860064
第47个节点的值为4419,地址为13859488
第48个节点的值为4609,地址为13860192
第49个节点的值为4803,地址为13859584
第50个节点的值为5001,地址为13858944
第51个节点的值为5203,地址为13859296
第52个节点的值为5409,地址为13860128
第53个节点的值为5619,地址为13859936
第54个节点的值为5833,地址为13859168
第55个节点的值为6051,地址为13859360
第56个节点的值为6273,地址为13858752
第57个节点的值为6499,地址为13858848
第58个节点的值为6729,地址为13858304
第59个节点的值为6963,地址为13858432
第60个节点的值为7201,地址为13859808
第61个节点的值为7443,地址为13858560
第62个节点的值为7689,地址为13859680
第63个节点的值为7939,地址为13858592
第64个节点的值为8193,地址为13858528
第65个节点的值为8451,地址为13859136
第66个节点的值为8713,地址为13858976
第67个节点的值为8979,地址为13858624
第68个节点的值为9249,地址为13858336
第69个节点的值为9523,地址为13859200
第70个节点的值为9801,地址为13859232
第71个节点的值为10083,地址为13859040
第72个节点的值为10369,地址为13859424
第73个节点的值为10659,地址为13858368
第74个节点的值为10953,地址为13859264
第75个节点的值为11251,地址为13859456
第76个节点的值为11553,地址为13858400
第77个节点的值为11859,地址为13858784
第78个节点的值为12169,地址为13859872
第79个节点的值为12483,地址为13860000
第80个节点的值为12801,地址为13859616
第81个节点的值为13123,地址为13859328
第82个节点的值为13449,地址为13858688
第83个节点的值为13779,地址为13859392
第84个节点的值为14113,地址为13858656
第85个节点的值为14451,地址为13859520
第86个节点的值为14793,地址为13860224
第87个节点的值为15139,地址为13859552
第88个节点的值为15489,地址为13858720
第89个节点的值为15843,地址为13859648
第90个节点的值为16201,地址为13858880
第91个节点的值为16563,地址为13858816
第92个节点的值为16929,地址为13859712
第93个节点的值为17299,地址为13858912
第94个节点的值为17673,地址为13859008
第95个节点的值为18051,地址为13859072
第96个节点的值为18433,地址为13859968
第97个节点的值为18819,地址为13860096
第98个节点的值为19209,地址为13859104
第99个节点的值为19603,地址为13859744
当前节点数为最后一个:99


请输入你要查找的数字:
14451
你输入的数字是:14451


你输入的数在第85个,值为14451

--------------------------------
Process exited after 11.38 seconds with return value 0
Press any key to continue . . .

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值