#include<stdio.h> #define null 0 typedef int Datatype;//定义数据函数 typedef struct node { Datatype data; struct node *next; }linknode; linknode *creatlink();//定义单连表的数据函数 linknode *h[3]; linknode *paixu(arr,m)//定义排序算法 int arr[]; int m; { int i,j,k=-1,n; linknode *p; for(i=1;idata=arr[i]; r->next=s; r=s; } r->next=null; return head; } int compare(int a,int b,int c)//定义建立链表函数 { int m,t; if(a==b&&b==c) return 4; if(ac) t=3;j return t; } int findsame(linknode *h1,linknode *h2,linknode *h3) //定义在三个单链表中找到第一个相同的函数 { linknode *p=h1->next,*q=h2->next,*r=h3->next; int find=0,n; while(p!=null&&q!==null&&r!=null&&find==0)//循环条件 { n=compare(p->data,q->data,r->data); switch(n) { case 4:find=1;break; case 3:r=r->next;break; case 2:q=q->next;break; case 1:p=p->next;break; } } if(find) return p->data; else return -1; } void main() { int d,n,m,i; int arr[3][80]; printf("请输入数组元素的个数:"); scanf("%d",&m); for(n=0;n<3;n++) { printf("请输入数组元素的值:/n"); for(i=1;i<=m;i++) scanf("%d",&arr[n][i]); h[n]=paixu(arr[n],m);//注意arr[n]是数组名 } if((d=findsame(h[0],h[1],h[2]))!=-1) printf("第一个相同的数是:%d/n",d); else printf("对不起,没有找到相同的数! /n"); }
链表的一些操作
最新推荐文章于 2024-07-20 09:51:47 发布