链表
2016-01-04 17:24
351 查看
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define len sizeof(struct list)
struct list{
int data;
struct list *next;
};
struct list *la,*lb;
struct list *initlist(){
struct list *head;
head=(struct list*)malloc(len);
return head;
}
struct list *insertlist(struct list*la){
int n;
struct list *head,*p1;
head=la;
printf("请输入需要插入元素的个数:n");
scanf("%d",&n);
printf("\n");
while(n--)
{
p1=(struct list*)malloc(len);
scanf("%d",&p1->data);
p1->next=NULL;
la->next=p1;
la=p1;
}
return head;
}
void getElem(struct list *la)
{
printf("请输入你想的到元素的位置n:");
int n;
scanf("%d",&n);
printf("\n");
while(n&&la->next)
{
n--;
la=la->next;
}
if(n)
printf("您要查找的数超出范围:\n");
else
printf("%d\n",la->data);
}
void listinsert(struct list *la)
{
int n,e;
printf("请输入你要插入的元素和位置");
scanf("%d%d",&n,&e);
struct list *p1;
while(n&&la->next){
n--;
p1=la;
la=la->next;
}
if(n)
printf("你所要插入的位置已经超出范围了。\n");
else
{
struct list *p2;
p2=(struct list*)malloc(len);
p2->data=e;
p2->next=p1->next;
p1->next=p2;
printf("插入成功\n");
}
}
void unionlist(struct list *pa,struct list*pb)
{
struct list *head;
head=pa;
while(pa->next)
{
pa=pa->next;
}
pa=pb->next;
printf("合并后的链表是:\n");
while(head->next)
{
printf("%d ",head->next->data);
head=head->next;
}
printf("\n");
}
int main(){
while(1){
printf("************************************************************\n");
printf("* 请输入你要实现的功能前的序号 *\n");
printf("* 1 初始化链表 *\n");
printf("* 2 对链表进行赋值 *\n");
printf("* 3 向链表中取值 *\n");
printf("* 4 向链表中插入元素 *\n");
printf("* 5 归并链表 *\n");
printf("* 6 退出程序 *\n");
printf("************************************************************\n");
int x;
scanf("%d",&x);
if(x==1){
printf("请输入你要初始化的链表a,b\n\n");
getchar();
char ch;
ch=getchar();
if(ch=='a'){
la=initlist();
if(!la)
printf("初始化失败\n\n");
else{
la->next=NULL;
printf("初始化成功\n\n");
}
}
else if(ch=='b'){
lb=initlist();
if(!lb)
printf("初始化失败\n\n");
else{
lb->next=NULL;
printf("初始化成功\n\n");
}
}
else
printf("输入错误\n\n");
}
else if(x==2){
printf("请输入你要进行赋值的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
la=insertlist(la);
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
lb=insertlist(lb);
}
}
else if(x==3){
printf("请输入你要进行取值的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
getElem(la);
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
getElem(lb);
}
}
else if(x==4){
printf("请输入你要进行插入的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
listinsert(la);
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
listinsert(lb);
}
}
else
aacb
if(x==5){
if(!la){
printf("请先初始化链表a\n");
break;
}
if(!la){
printf("请先初始化链表b\n");
break;
}
unionlist(la,lb);
}
else
break;
}
return 0;
}
#include<string.h>
#include<stdlib.h>
#define len sizeof(struct list)
struct list{
int data;
struct list *next;
};
struct list *la,*lb;
struct list *initlist(){
struct list *head;
head=(struct list*)malloc(len);
return head;
}
struct list *insertlist(struct list*la){
int n;
struct list *head,*p1;
head=la;
printf("请输入需要插入元素的个数:n");
scanf("%d",&n);
printf("\n");
while(n--)
{
p1=(struct list*)malloc(len);
scanf("%d",&p1->data);
p1->next=NULL;
la->next=p1;
la=p1;
}
return head;
}
void getElem(struct list *la)
{
printf("请输入你想的到元素的位置n:");
int n;
scanf("%d",&n);
printf("\n");
while(n&&la->next)
{
n--;
la=la->next;
}
if(n)
printf("您要查找的数超出范围:\n");
else
printf("%d\n",la->data);
}
void listinsert(struct list *la)
{
int n,e;
printf("请输入你要插入的元素和位置");
scanf("%d%d",&n,&e);
struct list *p1;
while(n&&la->next){
n--;
p1=la;
la=la->next;
}
if(n)
printf("你所要插入的位置已经超出范围了。\n");
else
{
struct list *p2;
p2=(struct list*)malloc(len);
p2->data=e;
p2->next=p1->next;
p1->next=p2;
printf("插入成功\n");
}
}
void unionlist(struct list *pa,struct list*pb)
{
struct list *head;
head=pa;
while(pa->next)
{
pa=pa->next;
}
pa=pb->next;
printf("合并后的链表是:\n");
while(head->next)
{
printf("%d ",head->next->data);
head=head->next;
}
printf("\n");
}
int main(){
while(1){
printf("************************************************************\n");
printf("* 请输入你要实现的功能前的序号 *\n");
printf("* 1 初始化链表 *\n");
printf("* 2 对链表进行赋值 *\n");
printf("* 3 向链表中取值 *\n");
printf("* 4 向链表中插入元素 *\n");
printf("* 5 归并链表 *\n");
printf("* 6 退出程序 *\n");
printf("************************************************************\n");
int x;
scanf("%d",&x);
if(x==1){
printf("请输入你要初始化的链表a,b\n\n");
getchar();
char ch;
ch=getchar();
if(ch=='a'){
la=initlist();
if(!la)
printf("初始化失败\n\n");
else{
la->next=NULL;
printf("初始化成功\n\n");
}
}
else if(ch=='b'){
lb=initlist();
if(!lb)
printf("初始化失败\n\n");
else{
lb->next=NULL;
printf("初始化成功\n\n");
}
}
else
printf("输入错误\n\n");
}
else if(x==2){
printf("请输入你要进行赋值的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
la=insertlist(la);
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
lb=insertlist(lb);
}
}
else if(x==3){
printf("请输入你要进行取值的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
getElem(la);
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
getElem(lb);
}
}
else if(x==4){
printf("请输入你要进行插入的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
listinsert(la);
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
listinsert(lb);
}
}
else
aacb
if(x==5){
if(!la){
printf("请先初始化链表a\n");
break;
}
if(!la){
printf("请先初始化链表b\n");
break;
}
unionlist(la,lb);
}
else
break;
}
return 0;
}
相关文章推荐
- XenServer删除储存仓库
- [Android实例] 波浪动画效果,正弦曲线绘制
- linux watchdog
- [置顶] 百度搜索引擎高级搜索指令
- 监控软件的使用
- javamail 发送csv附件不完整解决
- LinkAssemblies任务意外失败
- 学习字符串后的感受
- 使用Axis2实现WebService的发布和调用
- javascript 中的 call
- 使用Axis2实现WebService的发布和调用
- 蓝桥杯-连号区间数(规律)
- freemarker的Word模板生成方法
- js将一组为包含重复和无序日期的数组转化为按正常日期顺序排列的一组数组
- MyISAM和InnoDB在工程实践中的选择
- eclipse package,source folder,folder区别及相互转换
- 头像截图小插件 【前端】
- Java中toString方法作用
- 银联内核与pboc内核的区别(闪付流程)
- Codefoces310 div1