c语言链表的查找函数 c语言获取链表长度

C语言: 链表查询

/*

10余年的谢家集网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整谢家集建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“谢家集网站设计”,“谢家集网站推广”以来,每个客户项目都认真落实执行。

typedef struct list_node

{

Eleme data;

struct list_node *next;

}List_Node,*plist_node;

*/

#include "stdio.h"

#include "malloc.h"

#include "stdlib.h"

#include "time.h"

#include "my_data.h"

plist_node Creat(void)/*链表创建函数*/

{

int len,val;//定义列表长度,存放节点数据

plist_node phead = (plist_node)malloc(sizeof(List_Node));//创建分配一个头结点数据

if(phead == NULL)

{

printf("空间分配失败啊!");

exit(-1);

}

plist_node pTail = phead;// 链表的末尾节点,初始指向头节点

pTail-next = NULL;// 最后一个节点指针置为空

printf("输入节点个数:");

scanf("%d",len);

for(int i=0;ilen;i++)

{

plist_node pNew = (plist_node)malloc(sizeof(list_node)); //分配一个新节点

if (pNew == NULL) {

printf("分配新节点失败\n");

exit(-1);

}

printf("请输入第 %d 个节点的数据:", i + 1);

scanf("%d", val); //输入链表节点的数据

pNew-data = val; //把数据赋值给节点数据域

pTail-next = pNew; //末尾节点指针指向下一个新节点

pNew-next = NULL; //新节点指针指向为空

pTail = pNew; //将新节点复制给末尾节点

}

printf("链表创建成功!");

return phead;//返回头结点

}

void Trave(plist_node List)/*链表遍历函数*/

{

plist_node Pn = List-next;

printf("遍历链表的值为:");

if( Pn == NULL)

printf("链表为空!");

while( Pn != NULL)

{

printf("%d \t",Pn-data);

Pn =Pn-next;

}

printf("\n");

}

plist_node Find(plist_node List)/*链表查询函数*/

{

plist_node P = List-next;

int num=0,val=0; //num 为节点位置,val为查询到的值

printf("请输入要查询的值:");

scanf("%d",val);

while(P!= NULL P-data!=val)

{

P=P-next;

++num;

}

if(P!=NULL)

printf("找到的节点为:%d",num+1);

else

printf("找不到该节点!");

printf("\n");

return P;

}

void Inser(plist_node List,int pos,int val)//链表的插入操作,在 pos 号节点处插入数据 val

{

int pin = 0 ;

plist_node P = List;

while(P != NULL pin pos-1)

{

P = P-next;

++pin;

}

plist_node tmp = (plist_node)malloc(sizeof(list_node));//临时节点,用于存储要插入的数据

if( tmp == NULL)

{

printf("内存分配失败!");

exit(-1);

}

//开始插入节点

tmp-data = val;

tmp-next = P-next;

P-next = tmp;

}

void Deletelist(plist_node List,int pos)/*链表元素删除函数*/

{//删除第pos个节点

int pin=0;

plist_node tmp;

plist_node P = List;

while(P != NULL pinpos-1)

{

P = P-next;

++pin;

}

tmp = P-next;

P-next = tmp-next;

P-next = tmp-next;

free(tmp);

tmp=NULL;

}

void UI(int num)

{

switch(num)

{

case 11:

system("cls");

printf("**********首页*********\n");

printf("\n\t*1.创建链表\n");

printf("\t*2.查看链表\n");

printf("\t*3.查询链表\n");

printf("\t*4.插入节点\n");

printf("\t*5.删除节点\n");

printf("\t*0.返回首页\n");

printf("\n**********首页*********\n");

break;

case 1:

system("cls");

printf("****\t*****创建*********\n");

break;

case 2:

system("cls");

printf("****\t*****查看*********\n");

break;

case 3:

system("cls");

printf("****\t*****查找*********\n");

break;

case 4:

system("cls");

printf("****\t*****插入*********\n");

break;

case 5:

system("cls");

printf("****\t*****删除*********\n");

break;

case 0:

system("cls");

printf("****\t**************\n");

break;

default:

break;

}

}

C语言 单链表 查找一个元素出现的所有位置

int get1(linklist *head,int ch,int *a)

{

linklist *p=head;

int i=0,j=0;

while(p!=NULL)

{

if(p-data==ch)

{

a[j++]=i;

a=(int*)relloc(a,(j+1)*sizeof(int));

}

i++;

p=p-next;

}

return j;

}

这个函数,返回值是找到的位置的个数,数组a存放的位置的索引。

调用的时候:

int *a;

linklist *head;

//链表初始化

char ch;

//ch初始化

int n=get1(head,ch,a);

if(n!=0)

{

printf("找到了,在");

for(int i=0;in;i++)

printf("%2d",a[i]);

printf("位置\n");

}

else

printf("没有找到\n");

C语言链表的建立,输出,长度,元素的查找,删除,插入,主函数不知道怎么写!!!要可以编译的!!!谢谢

你照下面这个 去写:下面这个是顺序表的基本操作:void main()

{

char a[5]={'a','b','c','d','e'};

int n=5;

char f='f',b='a',e;

SqList sq;

InitList(sq); //初始化表

CreateList(sq,a,n); //传入数据

DispList(sq); //输出表

printf("sq.length=%d\n",ListLength(sq)); //输出表长

if(ListEmpty(sq)) //判断是否为空表

printf("sq是空表\n");

else

printf("sq不是空表\n");

printf("a在第%d位\n",LocateElem(sq,b)); //按元素值查找

ListInsElem(sq,f,4); //在第4个位置上插入f元素

DispList(sq); //输出表

printf("\n");

DelElem(sq,3,e); //删除第三个元素

DispList(sq); //输出表

}

其他函数和链表结构体定义包在头文件中。

C语言如何链表查询?

#include  stdio.h

typedef  int  datatype;

typedef  struct  node

{

datatype  data;

struct  node  *next;

}linklist;

//---查找元素------------

linklist *mindata(linklist *head, datatype a)

{

linklist *p;

p = head-next;

while( p != NULL p-data != a)

p = p-next;

}

return  p ;

}

//------主函数---------------------

main()

{

linklist  *head;

......

getchar();

} // main

文章标题:c语言链表的查找函数 c语言获取链表长度
标题路径:/article0/ddciioo.html

成都网站建设公司_创新互联,为您提供域名注册品牌网站设计品牌网站制作品牌网站建设用户体验服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司