链表菜单之初级版
来源:互联网 发布:seo与sem的异同 编辑:程序博客网 时间:2024/05/17 08:50
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
int n;
typedef struct Lnode
{
int data;
struct Lnode *next;
}LNode, *Linklist;
void creatList(Linklist &L)
{
LNode *p, *q;
int n,m;
printf(" 先输入一个n,在输入n个数: ");
scanf("%d",&n);
p = (Linklist)malloc(sizeof(LNode)); L = p;
while(n--)
{
q = (LNode*)malloc(sizeof(LNode));
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"))
int w;
}
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 = (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"))
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",&n);
}
int main()
{
int flag=1,pos,num;
Linklist L1;
do
{ system("cls");
menu();
switch(n)
{
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);
}
#include<stdlib.h>
#include<windows.h>
#include<string.h>
int n;
typedef struct Lnode
{
int data;
struct Lnode *next;
}LNode, *Linklist;
void creatList(Linklist &L)
{
LNode *p, *q;
int n,m;
printf(" 先输入一个n,在输入n个数: ");
scanf("%d",&n);
p = (Linklist)malloc(sizeof(LNode)); L = p;
while(n--)
{
q = (LNode*)malloc(sizeof(LNode));
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"))
int w;
}
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 = (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"))
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",&n);
}
int main()
{
int flag=1,pos,num;
Linklist L1;
do
{ system("cls");
menu();
switch(n)
{
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);
}
0 0
- 链表菜单之初级版
- c++初级 之 反转链表
- c++初级 之 双向链表
- 基础之初级菜单(带二级显示,可伸展)
- css样式之初级版
- spring mvc 之初级版
- html之自定义插件初级版
- 表为平方和初级版
- VB.NET菜单设计初级入门
- VB.NET菜单设计初级入门
- android中菜单的实现(初级)
- 算法学习之旅,初级篇(23)–合并两个有序链表
- 算法学习之旅,初级篇(27)-–逆转一个链表
- 算法学习之旅,初级篇(28)-–从尾到头打印链表
- zpl之初级使用
- c++初级之二
- C#之初级篇
- UML之初级篇
- ThinkPHP5.0
- 算法设计与应用基础: 第三周(3)
- halcon在VS2013开发环境下的C#编程
- Java中Math.random()获取随机数的用法
- 1.4.2冒泡法(先排序再去重)
- 链表菜单之初级版
- DeepMind组建美国团队:加强与谷歌的联系
- FZU 1036 四塔问题(规律)
- leetcode144. Binary Tree Preorder Traversal
- 基于How To Tango With Django 1.9的重新实践(0-5)
- HDU3488-Tour
- 归并排序实现及时间复杂度分析
- [BZOJ 1005][HNOI2008]明明的烦恼(prufer编码+组合数学+高精度)
- 【BZOJ1076】【SCOI2008】奖励关(期望+状压dp)