真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

鏈表結構體查找c語言函數 鏈表的查找

C語言中如何實現對結構體的查找以及輸出?

C語言的結構體是一組數據的組合,并不是簡單的單一類型。所以在查找和輸出的時候,均不能直接操作,而是要進行變通。

成都創(chuàng)新互聯(lián)公司網站建設公司,提供成都網站設計、做網站,網頁設計,建網站,PHP網站建設等專業(yè)做網站服務;可快速的進行網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,是專業(yè)的做網站團隊,希望更多企業(yè)前來合作!

1 查找。

對于以某一項為關鍵字進行查找時,比如在結構體中有int型的成員a,要查找a為100的結構體變量,這時需要遍歷每個結構體(數組、鏈表、或者其它任意形式),對每個元素的成員a值進行比較,符合的則表示查找成功。

對于結構體中元素較多,同時要對整個結構體每個元素都匹配才算查找到的特殊情況,可以使用memcmp的方式,整體進行比較,以減少代碼量。不過這種情況較為少見,不過多描述。

2 輸出。

對于結構體的輸出,其實就是對其每一項,或者若干項成員變量的輸出。

所以可以使用基本的輸出函數,對每一項單獨輸出,輸出中為了方便閱讀,可以加一些說明文字。

如果對結構體輸出有多處調用的需求,可以在將該功能封裝為函數,供各個需要的函數調用。這樣的好處是,當結構體的成員出現變化,或者結構體輸出要求更改時,修改一處代碼即可完成所有的輸出修改,實現易于維護的效果。

C語言: 鏈表查詢

/*

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)建函數*/

{

int len,val;//定義列表長度,存放節(jié)點數據

plist_node phead = (plist_node)malloc(sizeof(List_Node));//創(chuàng)建分配一個頭結點數據

if(phead == NULL)

{

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

exit(-1);

}

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

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

printf("輸入節(jié)點個數:");

scanf("%d",len);

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

{

plist_node pNew = (plist_node)malloc(sizeof(list_node)); //分配一個新節(jié)點

if (pNew == NULL) {

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

exit(-1);

}

printf("請輸入第 %d 個節(jié)點的數據:", i + 1);

scanf("%d", val); //輸入鏈表節(jié)點的數據

pNew-data = val; //把數據賦值給節(jié)點數據域

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

pNew-next = NULL; //新節(jié)點指針指向為空

pTail = pNew; //將新節(jié)點復制給末尾節(jié)點

}

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

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 為節(jié)點位置,val為查詢到的值

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

scanf("%d",val);

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

{

P=P-next;

++num;

}

if(P!=NULL)

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

else

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

printf("\n");

return P;

}

void Inser(plist_node List,int pos,int val)//鏈表的插入操作,在 pos 號節(jié)點處插入數據 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));//臨時節(jié)點,用于存儲要插入的數據

if( tmp == NULL)

{

printf("內存分配失??!");

exit(-1);

}

//開始插入節(jié)點

tmp-data = val;

tmp-next = P-next;

P-next = tmp;

}

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

{//刪除第pos個節(jié)點

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.創(chuàng)建鏈表\n");

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

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

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

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

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

printf("\n**********首頁*********\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語言鏈表的建立,輸出,長度,元素的查找,刪除,插入,主函數不知道怎么寫?。?!要可以編譯的?。?!謝謝

你照下面這個 去寫:下面這個是順序表的基本操作: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語言函數 鏈表的查找
網頁網址:http://weahome.cn/article/ddscieg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部