c語言鏈表的查找函數(shù) c語言獲取鏈表長(zhǎng)度

C語言: 鏈表查詢

/*

10余年的謝家集網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整謝家集建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“謝家集網(wǎng)站設(shè)計(jì)”,“謝家集網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

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)/*鏈表創(chuàng)建函數(shù)*/

{

int len,val;//定義列表長(zhǎng)度,存放節(jié)點(diǎn)數(shù)據(jù)

plist_node phead = (plist_node)malloc(sizeof(List_Node));//創(chuàng)建分配一個(gè)頭結(jié)點(diǎn)數(shù)據(jù)

if(phead == NULL)

{

printf("空間分配失敗?。?);

exit(-1);

}

plist_node pTail = phead;// 鏈表的末尾節(jié)點(diǎn),初始指向頭節(jié)點(diǎn)

pTail-next = NULL;// 最后一個(gè)節(jié)點(diǎn)指針置為空

printf("輸入節(jié)點(diǎn)個(gè)數(shù):");

scanf("%d",len);

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

{

plist_node pNew = (plist_node)malloc(sizeof(list_node)); //分配一個(gè)新節(jié)點(diǎn)

if (pNew == NULL) {

printf("分配新節(jié)點(diǎn)失敗\n");

exit(-1);

}

printf("請(qǐng)輸入第 %d 個(gè)節(jié)點(diǎn)的數(shù)據(jù):", i + 1);

scanf("%d", val); //輸入鏈表節(jié)點(diǎn)的數(shù)據(jù)

pNew-data = val; //把數(shù)據(jù)賦值給節(jié)點(diǎn)數(shù)據(jù)域

pTail-next = pNew; //末尾節(jié)點(diǎn)指針指向下一個(gè)新節(jié)點(diǎn)

pNew-next = NULL; //新節(jié)點(diǎn)指針指向?yàn)榭?/p>

pTail = pNew; //將新節(jié)點(diǎn)復(fù)制給末尾節(jié)點(diǎn)

}

printf("鏈表創(chuàng)建成功!");

return phead;//返回頭結(jié)點(diǎn)

}

void Trave(plist_node List)/*鏈表遍歷函數(shù)*/

{

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)/*鏈表查詢函數(shù)*/

{

plist_node P = List-next;

int num=0,val=0; //num 為節(jié)點(diǎn)位置,val為查詢到的值

printf("請(qǐng)輸入要查詢的值:");

scanf("%d",val);

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

{

P=P-next;

++num;

}

if(P!=NULL)

printf("找到的節(jié)點(diǎn)為:%d",num+1);

else

printf("找不到該節(jié)點(diǎn)!");

printf("\n");

return P;

}

void Inser(plist_node List,int pos,int val)//鏈表的插入操作,在 pos 號(hào)節(jié)點(diǎn)處插入數(shù)據(jù) 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));//臨時(shí)節(jié)點(diǎn),用于存儲(chǔ)要插入的數(shù)據(jù)

if( tmp == NULL)

{

printf("內(nèi)存分配失?。?);

exit(-1);

}

//開始插入節(jié)點(diǎn)

tmp-data = val;

tmp-next = P-next;

P-next = tmp;

}

void Deletelist(plist_node List,int pos)/*鏈表元素刪除函數(shù)*/

{//刪除第pos個(gè)節(jié)點(diǎn)

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("**********首頁(yè)*********\n");

printf("\n\t*1.創(chuàng)建鏈表\n");

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

printf("\t*3.查詢鏈表\n");

printf("\t*4.插入節(jié)點(diǎn)\n");

printf("\t*5.刪除節(jié)點(diǎn)\n");

printf("\t*0.返回首頁(yè)\n");

printf("\n**********首頁(yè)*********\n");

break;

case 1:

system("cls");

printf("****\t*****創(chuàng)建*********\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語言 單鏈表 查找一個(gè)元素出現(xiàn)的所有位置

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;

}

這個(gè)函數(shù),返回值是找到的位置的個(gè)數(shù),數(shù)組a存放的位置的索引。

調(diào)用的時(shí)候:

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語言鏈表的建立,輸出,長(zhǎng)度,元素的查找,刪除,插入,主函數(shù)不知道怎么寫!?。∫梢跃幾g的?。?!謝謝

你照下面這個(gè) 去寫:下面這個(gè)是順序表的基本操作: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); //傳入數(shù)據(jù)

DispList(sq); //輸出表

printf("sq.length=%d\n",ListLength(sq)); //輸出表長(zhǎng)

if(ListEmpty(sq)) //判斷是否為空表

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

else

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

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

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

DispList(sq); //輸出表

printf("\n");

DelElem(sq,3,e); //刪除第三個(gè)元素

DispList(sq); //輸出表

}

其他函數(shù)和鏈表結(jié)構(gòu)體定義包在頭文件中。

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 ;

}

//------主函數(shù)---------------------

main()

{

linklist ?*head;

......

getchar();

} // main

文章標(biāo)題:c語言鏈表的查找函數(shù) c語言獲取鏈表長(zhǎng)度
標(biāo)題路徑:http://muchs.cn/article0/ddciioo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、品牌網(wǎng)站設(shè)計(jì)品牌網(wǎng)站制作、品牌網(wǎng)站建設(shè)用戶體驗(yàn)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司