链表菜单简单版 纯C

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
int cmd;
typedef struct Lnode
{
int data;
struct Lnode *next;
}LNode, *Linklist;
void creatList(Linklist &L)
{
LNode *p;
int n,m;
printf(" 先输入一个n,在输入n个数: ");
scanf("%d",&n);
//p = (Linklist)malloc(sizeof(LNode));
L = p;
while(n--)
{
LNode *q;
q = (LNode*)malloc(sizeof(LNode));//这一步一定要重新申请内存,不然 q的指向永远不会变,
//导致一个单节点q=p,且自身的next指向自身;
scanf("%d",&m);
q->data = m;
p->next = q;
p = q;
}
p->next = NULL;
}
void Print(Linklist &L)
{
LNode *p;
p=L->next;
printf(" 链表输出为");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
printf(" 是否继续 yes 0r no? :");
char str[4];
scanf("%s",str);
if(strcmp(str,"yes"))
return ;
}
void Listinert(Linklist &L, int i, int e)
{
Linklist head = L;
int j = 0;
Linklist p = head;
while (p != NULL&&j < i - 1)
{
j++; p = p->next;
}
if (!p || j > i - 1)
printf("worry\n");
else
{
Linklist s=new LNode; //= (Linklist)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
}
}
void Listdelete(Linklist &L, int i)
{
int j=0;
Linklist p = L;
Linklist q;
while(p->next&&j<i-1)
{
p=p->next;j++;
}
if(!p->next||(j>i-1))
j=j;
else
{
q=p->next;p->next=q->next;
free(q);
}
}

void length(Linklist &L)
{
LNode *p;
p=L->next;
int l=0;
while(p!=NULL)
{
l++;
p=p->next;
}
printf("%d\n",l);
printf(" 是否继续 yes 0r no? :");
char str[4];
scanf("%s",str);
if(strcmp(str,"yes")||strcmp(str,"YES")||strcmp(str,"Yes"))
int w;
}
void menu()
{ //打印图形界面
printf(" -------MENU------ ");
printf("\n");
printf(" ================= ");
printf("\n");
printf(" Linklist operation \n");
printf(" 1. creat \n");
printf(" 2. insert \n");
printf(" 3. delete \n");
printf(" 4. print \n");
printf(" 5. length \n");
printf(" 6. reverse \n");
printf(" 0. exit \n");
printf(" ================= ");
printf("\n");
printf(" Choice(0,1,2,3,4,5,6): ");
scanf("%d",&cmd);
}
int main()
{
int flag=1,pos,num;
Linklist L1;
do
{ system("cls");
menu();
switch(cmd)
{
case 0:
flag=0;break;
case 1:
creatList(L1); break;
case 2:
printf(" 输入插入的位置和对象: ");
scanf("%d %d",&pos,&num);
Listinert(L1,pos,num);
break;
case 3:
printf(" 输入删除的位置: ");
scanf("%d",&pos);
Listdelete(L1,pos);break;
case 4:
Print(L1);break;
case 5:
printf(" 链表的长度为: ");
length(L1);
}
}while(flag==1);
}

时间: 2024-08-29 02:13:00

链表菜单简单版 纯C的相关文章

Day2课后作业:三级菜单简单版

menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, '谷歌':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, '联想':{}, 'H3C':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '阿泰包子':{}, ' 北航':{}, }, '天通苑':{ '圆通快递':{}, '三合贸易':{}, }, '回龙观':{ '腾讯众创':{}, '盈创

C++ 简单版STL list 链表(迭代器版)

最近课程开始上设计模式了. 苦于天天满课的状态,不过题目可以放到晚上去刷. 周末师大校赛挺有趣的,题目质量好高. 花了几天写LIST,一开始就想写出 跟STL用法一样的LIST, 加个迭代器然后循环着自己用. 结果发现!!!!好多坑,有C++ 模板 C++ 符号重载等等. 不过也提高了点C++ 代码能力.感觉迭代器就是对node的封装..... #include <iostream> #include <cstdio> #include <list> #include

django简介,安装,文件介绍,三板斧(render,HttpResponse,redirect)HTTP协议,用socket实现简单版web框架,用wsgiref,jinja2,pymysql实现Django运行流程

1.web应用(https://www.cnblogs.com/Dominic-Ji/p/9167438.html) c/s,b/s架构c/s:客户端 服务端b/s:浏览器 服务器?   2.HTTP协议: 超文本传输协议 四大特性: 1.基于TCP/IP作用在应用层之上的协议,底层实现仍为socket 2.基于请求响应:通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应 3.无状态:协议不对任何一次通信状态和任何数据做保存 4.无连接:一次连接只完成一次请求-响应,请求-响应完毕后

数据结构概述&lt;3&gt;链表的简单应用

今天介绍两个链表的简单应用. 1.约瑟夫问题 假设有N个人决定选出一个领导人,方法如下:所有人排成一个圆圈,按顺序数数,每次数到第M个人出局,此时,他两边的人靠拢重新形成圆圈.问题是找出哪一个人将会是最后剩下的那个人.下列程序依次读入N和M,并给出最终结果. #include <stdlib.h> #include <stdio.h> typedef struct node* link; struct node { int item; link next; }; int main(

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

Linux 内核 链表 的简单模拟(2)

接上一篇Linux 内核 链表 的简单模拟(1) 第五章:Linux内核链表的遍历 /** * list_for_each - iterate over a list * @pos: the &struct list_head to use as a loop cursor. * @head: the head for your list. */ #define list_for_each(pos, head) for (pos = (head)->next; pos != (head);

Java实现简单版SVM

最近的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,因为没有用到拉格朗日,对偶,核函数等等.而是用最简单的梯度下降法求解.其中的数学原理我参考了http://blog.csdn.net/lifeitengup/article/details/10951655,文中是用matlab实现的svm. 源代码和数据集下载:https://github.com/linger2012/simpleSvm 其中数据集来自于libsvm,我找了其中

MFC抓取网页代码简单版。

最近又在网上找了一些有关MFC抓取网页代码的文章看,发现有个比较简单的代码,和大家分享下. CInternetSession session(NULL, 0); CHttpFile* htmlFile = NULL; CString strLine, strHtml; CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?"); TCHAR sRecv[1024]; UIN

luogu P3808 【模板】AC自动机(简单版)

二次联通门 : luogu P3808 [模板]AC自动机(简单版) /* luogu P3808 [模板]AC自动机(简单版) 手速越来越快了 10分钟一个AC自动机 一遍过编译 + 一边AC 感觉不错 我也就做做板子题了.. */ #include <iostream> #include <cstring> #include <cstdio> #include <queue> #define Max 1000009 void read (int &