资源描述:
《单链表找出重复的元素》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单链表找出重复的元素#include"stdio.h"#include"stdlib.h"typedefstructnode{intdata;structnode*next;}Node,*LinkList;//建立新表//voidinit_LinkList(LinkList*head_LinkList){*head_LinkList=0;}//插入一个数(任意一个数)//intinsert_LinkList(LinkList*head_LinkList,intx,inti){LinkListp,q;p=(LinkList)malloc(sizeof(Node));
2、//开辟一个结构体的内存地址//if(p==NULL)return-1;p->data=x;if(i==0){p->next=*head_LinkList;*head_LinkList=p;return1;}else{q=*head_LinkList;while(q->next!=NULL&&i>0){q=q->next;i--;}if(q!=NULL){p->next=q->next;q->next=p;return1;}return-1;}}//删除一个数//intdelete_LinkList(LinkList*head_LinkList,intx){Nod
3、e*p,*q;p=(LinkList)malloc(sizeof(Node));p=*head_LinkList;if(p->data==x)//当p为首地址时//{*head_LinkList=(*head_LinkList)->next;free(p);return1;}else//当p大于首地址时//{q=p;p=p->next;while(p!=NULL){if(p->data==x){q->next=p->next;free(p);return1;}q=p;p=p->next;}return-1;}}//显示重复元素的个数//intch_LinkList
4、(LinkListhead,intx){LinkListp,q;inti=0;p=head;q=p;while(p!=NULL){if(q=p->next)i++;p=p->next;}if(i==0)return-1;elsereturni-1;}//查询一个数//LinkListlocation_LinkList(LinkListhead,intx){LinkListp;p=head;while(p!=NULL){if(p->data==x)break;p=p->next;}returnp;}//遍历表//voidshow_LinkList(LinkListh
5、ead){Node*p;p=head;if(p==NULL)printf("空表");while(p!=NULL){printf("%d",p->data);p=p->next;}}//清空//voidset_LinkList(LinkList*head_LinkList){*head_LinkList=0;}//长度//intlength_LinkList(LinkListhead){Node*p;intsum=0;p=head;while(p!=NULL){sum++;p=p->next;}returnsum;}//主程序//voidmain(){intx
6、,i,j;Node*head;LinkListlocal;init_LinkList(&head);do{printf("");printf("1---插入一个数");printf("2---查询一个数");printf("3---删除一个数");printf("4---显示一个数");printf("5---显示一个重复数的个数");printf("6---长度一个数");printf("7---退出");scanf("%d",&i);switch(i){case1:printf("请输入插入一个数");scanf("%d",
7、&x);printf("请输入你要插入的位置");scanf("%d",&j);if(insert_LinkList(&head,x,j)!=1)printf("插入失败");break;case2:printf("请输入查询一个数");scanf("%d",&x);local=location_LinkList(head,x);if(local!=NULL)printf("查询成功");elseprintf("查询失败");break;case3:printf("请输入删除一个数");scanf("%d",&x);if(delete_Li
8、nkLis