c语言线性查找函数,数据结构线性表查找代码c语言

c语言 最快的查找方式

1、最快的查找方式是:二分法查找。

十堰郧阳网站建设公司创新互联公司,十堰郧阳网站设计制作,有大型网站制作公司丰富经验。已为十堰郧阳成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的十堰郧阳做网站的公司定做!

2、查找的线性表分:无序线性表、有序线性表、分块有序线性表。

3、对无序线性表只能采用顺序查找,顺序查找的平均比较次数为(n+1)/2

4、对有序线性表可以采用二分查找,二分查找的比较次数为log2n

5、对分块有序线性表可以采用分块法查找。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。

数据结构 c语言实现线性表查找

表述是没有错,但是

b.elem[5]={1,2,3,4,5};

赋值能这么赋值么······,虽然elem是b的元素,但是也是个数组,数组我记得是不能这么赋值的········

其他的就没发现有啥问题了····

C语言链表操作

typedefstruct_List{intdata;struct_List*next;}List;intQuery(List**head,intx){List*p=(*head)-next;intn=1;while(pp-data!=x){p=p-next;n++;}if(p)returnn;elsereturn-1;}

c语言线性表的插入,查找和删除以电话簿为例

#includefstream.h

#includeconio.h

#includeiostream.h

#includeiomanip.h

#includestring.h

#includestdlib.h

struct friend_node//结构体类型定义,包括:姓,名,电话号码

{

char last_name[20];

char first_name[20];

char phone_num[12];

friend_node * next;

};

friend_node *head_ptr;//全程变量,链头指针

friend_node *current_ptr;//全程变量,指明位置

void handle_choice(int choice);

void add_record();

void insert_node(friend_node *new_rec_ptr);

friend_node *position_insertion_point(char lastname[20]);

void make_node_new_head(friend_node *new_rec_ptr);

void add_node_to_end(friend_node *new_rec_ptr);

void move_current_to_end();

void display_list();

void delete_record();

void delete_head_of_list();

void delete_end_of_list(friend_node *previous_ptr);

void delete_from_middle_of_list(friend_node *previous_ptr);

int verify_delete();

void delete_node(friend_node *previous_ptr);

void delete_list();

void search_by_lastname();

void write_list_to_file();

void load_list_from_file();

//void help_me();

char pause;

//main function

int main()

{

cout"欢迎使用mmc电话簿程序\nPress Enter To Continue\n";

cin.get(pause);

system("cls");

int choice;

head_ptr=NULL;

do

{

cout"1-新增\n";

cout"2-显示所有记录\n";

cout"3-通过姓来查找记录\n";

cout"4-删除记录\n";

cout"5-帮助\n";

cout"6-退出\n";

cinchoice;

handle_choice(choice);

} while(choice !=6);

return 0;

}

void handle_choice(int choice)

{

switch(choice)

{

case 1:

add_record();

break;

case 2:

display_list();

break;

case 3:

search_by_lastname();

break;

case 4:

delete_record();

break;

case 5:

cout"mmc制作\n这个程序的主要功能为:\n对电话簿的管理\n通过此程序可以实现对新增,显示,删除记录等功能\n";

break;

case 6:

write_list_to_file();

if(head_ptr !=NULL)

{

delete_list();

}

break;

default:

cout"Invalid choice\n";

break;

}

}

void add_record()

{

friend_node * new_rec_ptr;

new_rec_ptr = new friend_node;

if(new_rec_ptr !=NULL)

{

system("cls");

cin.ignore(20,'\n');

cout"First Name:";

cin.get(new_rec_ptr-first_name,15);

cin.ignore(20,'\n');

cout"last name:";

cin.get(new_rec_ptr-last_name,20);

cin.ignore(20,'\n');

cout"Phone Number: ";

cin.get(new_rec_ptr-phone_num,15);

cin.ignore(20,'\n');

insert_node(new_rec_ptr);

}

else //

{

cout"WARNING:错误,无法增加\n";

}system("cls");

}//end

//

void insert_node(friend_node * new_rec_ptr)

{

system("cls");

friend_node * before_ptr;

friend_node * after_ptr;

if(head_ptr==NULL)

{

new_rec_ptr-next=NULL;

head_ptr=new_rec_ptr;

}

else

{

if(strcmp(new_rec_ptr-last_name,head_ptr-last_name)0)

{

make_node_new_head(new_rec_ptr);

}

else

{

current_ptr=position_insertion_point(new_rec_ptr-last_name);

before_ptr=current_ptr;

after_ptr=current_ptr-next;

if(after_ptr==NULL)

{

add_node_to_end(new_rec_ptr);

}

else

{

before_ptr-next=new_rec_ptr;

new_rec_ptr-next=after_ptr;

}

}

}

}

friend_node * position_insertion_point(char lastname[20])

{//根据姓氏返回正确位置,新节点插入此点

char temp_name[20];

friend_node* temp_ptr;

int tempint;

if(head_ptr-next!=NULL)

{

current_ptr=head_ptr;

temp_ptr=current_ptr-next;

strcpy(temp_name,temp_ptr-last_name);

tempint=strcmp(lastname,temp_name);

while((tempint0)(current_ptr-next!=NULL))

{

current_ptr=temp_ptr;

if(current_ptr-next!=NULL)

{

temp_ptr=current_ptr-next;

strcpy(temp_name,temp_ptr-last_name);

tempint=strcmp(lastname,temp_name);

}

}

}

else

{

current_ptr=head_ptr;

}

return(current_ptr);

}

void make_node_new_head(friend_node * new_rec_ptr)

{

friend_node * temp_ptr;

temp_ptr=head_ptr;

new_rec_ptr-next=temp_ptr;

head_ptr=new_rec_ptr;

}

void add_node_to_end(friend_node *new_rec_ptr)

{

new_rec_ptr-next=NULL;

move_current_to_end();

current_ptr-next=new_rec_ptr;

} //

void move_current_to_end()

{

current_ptr=head_ptr;

while(current_ptr-next!=NULL)

{

current_ptr=current_ptr-next;

}

} //

//

void display_list()

{

char fullname[36];

current_ptr=head_ptr;

if(current_ptr!=NULL)

{

coutendl;

cout"Name Phone Number\n";

cout"---------------------------------------------------------\n";

do

{

strcpy(fullname," ");//

strcat(fullname,current_ptr-last_name);

strcat(fullname,", ");

strcat(fullname,current_ptr-first_name);

cout.setf(ios::left);

coutsetw(36)fullname;

cout.unsetf(ios::left);

cout.setf(ios::right);

coutsetw(12)current_ptr-phone_numendl;

current_ptr=current_ptr-next;

coutendl;

}while(current_ptr!=NULL);

cout"Press Enter to continue\n";

cin.get(pause);

cin.ignore(1,pause);

system("cls");}

else

{

cout"\n无记录显示\n";

}

}

void search_by_lastname() //根据姓名查询

{

system("cls");

char search_string[20];

current_ptr=head_ptr;

cin.ignore(20,'\n');

cout"\nEnter the last name for which you want to search:";

cin.get(search_string,20);

cin.ignore(20,'\n');

while((current_ptr!=NULL)

(strcmp(current_ptr-last_name,search_string)!=0))

{

current_ptr=current_ptr-next;

}

if(current_ptr!=NULL)

{

cout"\n记录找到\n";

coutcurrent_ptr-first_namecurrent_ptr-last_nameendl;

coutcurrent_ptr-phone_numendl;

}

else

{

cout"没有匹配记录\n";

cout"PRESS ENDTER TO CONTIUNE\n";

cin.get(pause);

system("cls");

}

} //

//

void delete_record()

{

system("cls");

char search_string[20];

friend_node *previous_ptr;

previous_ptr=NULL;

current_ptr=head_ptr;

cin.ignore(20,'\n');

cout"\nEnter the last name of the friend you want to delete:";

cin.get(search_string,20);

cin.ignore(20,'\n');

//

while((current_ptr!=NULL)(strcmp(current_ptr-last_name,search_string)!=0))

{

previous_ptr=current_ptr;

current_ptr=current_ptr-next;

}

if(current_ptr!=NULL)

{

cout"\nRECORD FOUND\n";

coutcurrent_ptr-first_namecurrent_ptr-last_nameendl;

coutcurrent_ptr-phone_numendl;

if(verify_delete())

{

delete_node(previous_ptr);

cout"\nRECORD DELETED\n";

}

else

{

cout"\nRECORD NOT DELETED\n";

}

}

else

{

cout"\nNO MATCH FOUND.NO RECORD DELETED.\n";

}

system("cls");

} //

int verify_delete()//确认删除

{

char YesNo;

cout"\nAre you sure?(Y/N)";

cinYesNo;

if((YesNo=='Y')||(YesNo=='y'))

{

return(1);

}

else

{

return(0);

}

}

void delete_node(friend_node *previous_ptr)

{

if(current_ptr==head_ptr)

{

delete_head_of_list();

}

else

{

if(current_ptr-next==NULL)

{

delete_end_of_list(previous_ptr);

}

else

{

delete_from_middle_of_list(previous_ptr);

}

}

}

void delete_head_of_list()

{

current_ptr=head_ptr;

if(head_ptr-next!=NULL)

{

head_ptr=current_ptr-next;

}

else

{

head_ptr=NULL;

}

delete current_ptr;

}

void delete_end_of_list(friend_node * previous_ptr)

{

delete current_ptr;

previous_ptr-next=NULL;

current_ptr=head_ptr;

}

void delete_from_middle_of_list(friend_node * previous_ptr)

{

previous_ptr-next=current_ptr-next;

delete current_ptr-next;

current_ptr=head_ptr;

}

void delete_list()

{

friend_node * temp_ptr;

current_ptr=head_ptr;

do

{

temp_ptr=current_ptr-next;

delete current_ptr;

current_ptr=temp_ptr;

}while(temp_ptr!=NULL);

}

void write_list_to_file()

{

ofstream outfile;

outfile.open("FRIENDS.DAT",ios::out);

if(outfile)

{

current_ptr=head_ptr;

if(head_ptr!=NULL)

{

do

{

outfilecurrent_ptr-last_nameendl;

outfilecurrent_ptr-first_nameendl;

outfilecurrent_ptr-phone_numendl;

current_ptr=current_ptr-next;

}

while(current_ptr!=NULL);

outfile"END OF FILE"endl;

outfile.close();

}

}

}

/*

std::ifstream infile;

infile.open("in.txt");

if (!infile)

return -1; //invail file

char token;

int index = 0;

while (infile)

{

infile token

node_array[index].power token

node_array[index].coeff token;

++index;

}

infile.close();

*/

C语言关于线性搜索

#include stdio.h

#include string.h

typedef struct student {

char name[30];

unsigned matrno;

}student;

student participants[] = {

{"Jonh Doe",111},

{"Bob Baumei",139},

{"Jane Smith",140},

{"Jack Archer",140},

{"Jonhnny Mahony",167},

{"Simo Anthony",170},

{"Marylin Anderson",174},

{"Melanie Thomson",181},

{"Sydney Core",183},

{"Steve Smith",186},

};

int noFstud = 10;

int linSearchByName(char name[]) {

int i;

for(i = 0; i  noFstud; ++i) {

if(strcmp(name,participants[i].name) == 0)

return i;

}

return -1;

}

int main() {

char name[30];

int res;

printf("Input a name:");

res = linSearchByName(name);

if(res == -1) printf("no find.\n");

else printf("%s %u\n",participants[res].name,participants[res].matrno);

return 0;

}

c语言,输入工号,和姓名,然后线性查找,输入查找工号,输出姓名

#include"stdio.h"

#define N 10

#define Three 5

int ReadName(char name[][Three],long num[]); /*Readname()函数原型*/

int LinSearch(long num[],long x,int n); /*LinSeach()函数原型*/

int main()

{

char name[N][Three]; /*定义二维字符数组*/

int n,pos;

long num[N],x;

n=ReadName(name,num); /*输入教师姓名和工号*/

printf("Total teachers are %d\n",n);

printf("Input the searching ID");

scanf("%d",x); /*以整型格式从键盘输入待查找的工号*/

pos=LinSearch(num,x,n); /*查找工号为num的教师*/

if(pos!=-1)

printf("name = %s\n",name[pos]); /*若找到打印姓名*/

else

printf("Not found!\n"); /*若未找到,则打印未找到提示信息*/

return 0;

}

/*函数功能:输入教师的工号和姓名,当输入负值时,结束输入,返回教师人数*/

int ReadName(char name[][Three],long num[]) /*函数定义*/

{

int i=-1;

do{

i++;

printf("Input teacher's ID and name:");

scanf("%d %s",num+i,name[i]);//参数错误.

}while (num[i]0); /*输入负值时结束输入*/

return i;

}

/*按线性查找法查找值为x的数组元素,若找到则返回x在数组中的下标位置,否则返回-1*/

int LinSearch(long num[],long x,int n) /*函数定义*/

{

int i;

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

{

if(num[i]==x)

return i; /*若找到则返回x在数组中的下标*/

}

return -1; /*若循环结束任然未找到,则返回-1*/

}


分享文章:c语言线性查找函数,数据结构线性表查找代码c语言
文章网址:http://azwzsj.com/article/dsceejp.html