博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c_数据结构_链表
阅读量:7222 次
发布时间:2019-06-29

本文共 3624 字,大约阅读时间需要 12 分钟。

#include
#include
#define ERROR 0#define OK 1#define OVERFLOW -2typedef struct Lnode{ int data; struct Lnode *next;}LNode,*LinkList;//初始化一个空指针int InitList_L(LinkList &L){ L=(LNode *)malloc(sizeof(struct Lnode));// L->data=info; L->next=NULL; return OK;}//查找元素int Yin(LinkList L,int &r){ LinkList p;int x=0;int j=1;int i; printf("请选择:1.继续查询\n2.结束查询\n"); printf("请输入选择:"); scanf("%d",&x); if(x==1){ printf("\n请选择查询元素位置:"); scanf("%d",&i); p=L->next; while(p&&j
next; ++j; } if(!p||j>i){ printf("\n查询位置不在列表内!!\n\n"); //return ERROR; Yin(L,r); }else{
return ERROR;} //return OK; }// printf("******"); return OK;}int GetElem_L(LinkList L,int i,int &e){ LinkList p;int x=0;int j=1;int r,h; printf("\n请选择查询元素位置:"); scanf("%d",&i); p=L->next; while(p&&j
next; ++j; } if(!p||j>i){ printf("\n查询位置不在列表内!!\n\n"); h=Yin(L,r); if(h==0){ return ERROR; }else{ e=p->data; printf("\n查找的%d位置的元素为:%d\n\n",i,e); return OK; } } return OK;}//插入元素ListInser_L(LinkList &L,int i,int e){ LinkList p,s;int j=0; p=L; printf("\n请选择插入位置:"); scanf("%d",&i); printf("\n请选择插入元素:"); scanf("%d",&e); while(p&&j
next; ++j; } if(!p||j>i-1) { printf("\n插入位置不在链表长度内!!\n\n"); return ERROR; } s=(LNode*)malloc(sizeof(struct Lnode)); s->data=e; s->next=p->next; p->next=s; return OK;}// 删除元素int ListDelete_L(LinkList &L,int i,int e){ LinkList p,q;int j=0; p=L; printf("\n请输入要删除的位置:"); scanf("%d",&i); while(p->next&&j
next; ++j; } if(!(p->next)||j>i-1) { printf("\n删除的位置不在链表长度内!!\n\n"); return ERROR; } q=p->next; p->next=q->next; e=q->data; free(q); return OK; }//创建链表int creatlist(LinkList &L){ int i; LinkList p,q; if(L==NULL) InitList_L(L); q=L; printf("\n请输入链表长度:"); scanf("%d",&i); while(i<=0){ printf("\n输入链表长度不合法,请重新输入表长:"); scanf("%d",&i); } printf("\n请输入%d个数:",i); for(i;i>0;i--){ p=(LNode*)malloc(sizeof(struct Lnode)); p->next=NULL; scanf("%d",&p->data); q->next=p; q=p; } printf("\n输入成功!!\n\n"); return OK;}//打印链表中的元素int pr(LinkList L){ LinkList q; q=L->next; printf("\n表中存储元素为:\n"); while(q!=NULL){ printf("%d\n",q->data); q=q->next; } return OK;}//清空链表,只保留头结点void ClearList(LinkList &L){ LinkList p; while(L->next){ p=L->next; L->next=p->next; free(p); } printf("清空链表成功!!\n\n"); creatlist(L);}void OperateMenu(){ //操作菜单 printf("--------------请选择元素处理方式---------\n\n"); printf("0> 退出\n\n"); printf("1>: 查找给定位置的数据\n\n"); printf("2>: 插入元素\n\n"); printf("3>: 删除元素\n\n"); printf("4>: 打印元素\n\n"); printf("5>: 释放原链表,重新创建新链表\n\n"); printf("请选择对元素的处理:"); }void main(){ LinkList L; int w=0,k,i=1,e=0,boo; L=NULL; printf("注:此测试过程输入值应全为数字\n\n"); printf("请用户选择存入数据或退出程序:\n\n"); printf("存入数据请输入:'1'\n\n"); printf("退出请选择'0'或 其它!!\n\n"); printf("请选择:"); scanf("%d",&w); if(w==1){ InitList_L(L); creatlist(L); OperateMenu(); scanf("%d",&k); while(k){ switch(k){ case 0:break; case 1:boo=GetElem_L(L,i,e); if(boo) printf("查询成功!!\n\n"); else printf("查询失败!!\n\n"); break; case 2:boo=ListInser_L(L,i,e); if(boo) printf("\n插入成功!!\n\n"); else printf("插入失败!!\n\n"); break; case 3:boo=ListDelete_L(L,i,e); if(boo) printf("\n删除成功!!\n\n"); else printf("删除失败!!\n\n"); break; case 4:pr(L);break; case 5:ClearList(L);break; } OperateMenu(); scanf("%d",&k); } }else{ exit(OVERFLOW); }}

 

转载于:https://www.cnblogs.com/Vera-y/p/9971236.html

你可能感兴趣的文章
JavaScript 如何正确处理 Unicode 编码问题!
查看>>
iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
查看>>
微服务核心架构梳理
查看>>
浅谈JavaScript的面向对象和它的封装、继承、多态
查看>>
laravel with 查询列表限制条数
查看>>
Python爬虫--- 1.3 BS4库的解析器
查看>>
CentOS从零开始部署Nodejs项目
查看>>
React组件设计模式(一)
查看>>
express.js的介绍及使用
查看>>
闭包--闭包之tab栏切换(四)
查看>>
Elasticsearch 参考指南(升级前重新索引)
查看>>
Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
查看>>
浅析微信支付:申请退款、退款回调接口、查询退款
查看>>
基于axios的vue插件,让http请求更简单
查看>>
问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
查看>>
Kibana配置logstash,报表一体化
查看>>
算法-图和图算法
查看>>
Babel配置的不完全指南
查看>>
【附node操作实例】redis简明入门系列—字符串类型
查看>>
设计模式走一遍---观察者模式
查看>>