链表的处理(《数据结构》例题)
来源:互联网 发布:rc4加密算法 c语言 编辑:程序博客网 时间:2024/06/05 21:51
#include"stdio.h"
#include"stdlib.h"
#define ElemType int
typedef struct node
{ ElemType data;
struct node *next;
}Lnode;
Lnode *p,*q,*s,*head;
void outlin(Lnode *h);
void creat();
void insert(Lnode *h,ElemType x,ElemType y);
void delete_node(Lnode *h,ElemType x);
void reverse(Lnode *h);
void search(Lnode *h,int x);
void main()
{ int x,y,cord;
do{
printf("/n---------- 主菜单 -------------/n");
printf(" 1 建立线性表 2 擦入一个元素/n");
printf(" 3 删除一个元素 4 逆置链表 /n");
printf(" 5 搜索某数存在否 6 结束程序运行 /n");
printf("---------------------------------------- /n");
printf("请输入您的选择(1,2,3,4,5)/n");
scanf("%d",&cord);
switch(cord)
{
case 1: {creat(); outlin(head);
break;}
case 2:{ printf("/n x,y=?注意用逗号分隔");
scanf("%d,%d",&x,&y);
insert(head,x,y);
outlin(head);
}
break;
case 3:{ printf("/n x=?");
scanf("%d",&x);
delete_node(head,x);
outlin(head);
}
break;
case 4: reverse(head); outlin(head); break;
case 5: printf("/n请输入要搜索的数X=? ");
scanf("%d,&x");
search(head,x);
break;
case 6:exit(0);
}
}while(cord<=4);
}
void creat()
{
ElemType x; Lnode *ptr;
head=(Lnode *)malloc(sizeof(Lnode));
head->next=NULL; p=head;
printf("/n x=?"); scanf("%d",&x);
while(x!=-999)
{
ptr=(Lnode*)malloc(sizeof(Lnode));
ptr->data=x; ptr->next=NULL;
p->next=ptr;
p=ptr;
printf("/n x=?"); scanf("%d",&x);
}
}
void outlin(Lnode *h)
{ p=h->next; printf("/n ");
while(p!=NULL) { printf(" data=%4d",p->data);
p=p->next; }
printf("/n 输出结束 /n/n");
}
void insert(Lnode *h,ElemType x,ElemType y)
{
s=(struct node *)malloc(sizeof(struct node));
s->data=y;
q=h; p=h->next;
while(p!=NULL && p->data!=x) {q=p;p=p->next;}
q->next=s; s->next=p;
}
void delete_node(Lnode *h,ElemType x)
{
q=h; p=q->next;
while((p!=NULL) && (p->data!=x)) { q=p; p=p->next; }
if(p==NULL) printf("/n x 不存在 ! ");
else {
q->next=p->next;
free(p);
}
}
void reverse(Lnode *h)
{
p=h->next;
h->next=NULL;
while(p!=NULL)
{
q=p->next;
p->next=h->next;
h->next=p;
p=q;
}
}
void search(Lnode *h,int x)
{
p=h->next;
while(p!=NULL)
{
if(x==p->data)
printf("/n 该数据存在! /n");
else p=p->next;
}
if(p==NULL)
printf("/n 没有该数据! /n");
}
- 链表的处理(《数据结构》例题)
- 用指针处理链表例题(一)
- 用指针处理链表例题(二)
- 用指针处理链表例题(三)
- 队列模拟(简单链表数据结构的处理)
- 数据结构链表的简单处理
- 【数据结构】二叉排序树小礼包(对splay,Treap,SBT的理解,例题,代码)
- 静态链表例题
- 链表例题
- 单向链表例题
- 单向链表例题
- 北大数据结构经典例题
- c++数据结构例题
- 经典第三章 例题 3-1 UVA 272 TEX Quotes(字符的处理)
- 第九周(例题)——课本例题的熟悉。
- 第十一周(例题)——课本例题的熟悉 。
- 离线处理例题
- 一道典型的字符串处理的例题!!【很经典】
- Linux 进程管理
- oracle ebs 资料网址
- MISRA 2004 (先前作者写的MISRA文档是基于 1998版本,这个是基于更新的MISRA 2004版本)
- PopMenu加法
- 图的广度优先搜索算法实现
- 链表的处理(《数据结构》例题)
- reactos操作系统实现(88)
- 如何制作虚拟磁盘镜像和文件系统(英文版)
- java小练习(2)--打印1-100间的质数
- Oracle各版本在线文档网址
- 未能加载文件或程序集“Microsoft.Office.Interop.Excel , Version=11.0.0.0。。。”
- 程序设计、分析一点良好的习惯
- 跪求一段代码 自动判断IP 然后跳转网址
- 关于编码规则的解释