链式结构实现线性表的基本操作
来源:互联网 发布:js div 位置 编辑:程序博客网 时间:2024/05/16 15:01
<pre name="code" class="cpp">#include <stdio.h>#include <stdlib.h>typedef int Elementype;typedef struct Node { Elementype data; struct Node *next;}List;List * Init_ListEnd(List *ptr) ///尾插法建立单链表{ int num; ptr=(List*)malloc(sizeof(List)); ptr->next=NULL; List *p,*s; p=ptr; scanf ("%d",&num); while (num!=10) ///输入链表数据,当num=10时输入结束 { s=(List*)malloc(sizeof(List)); s->data=num; p->next=s; p=s; scanf("%d",&num); p->next=NULL; } return ptr;}List* Init_ListHead(List *ptr) ///头插法建立单链表{ int num;ptr=(List*)malloc(sizeof(List)); ///建立头结点ptr->next=NULL;scanf ("%d",&num);while (num!=10) { List*p=(List*)malloc(sizeof(List)); p->data=num; p->next=ptr->next; ptr->next=p; scanf ("%d",&num); } return ptr;}int lengthList ( List *ptr) ///求单链表表长{ int len=0; List *p=ptr->next; while (p) { p=p->next; len++; } return len;}void Printf_List (List *ptr) ///遍历链表{ List *p=ptr->next; while (p!=NULL) { printf ("%d ",p->data); p=p->next; } printf ("\n");}List *Find_posi (int i,List *ptr) ///按位查找{ int j=1; List *p=ptr; while (p!=NULL && j<i) { p=p->next; j++; } if (j==i) printf("%d\n",p->data); else printf ("Not found\n");}List *Find_elem(int x,List *ptr) ///按值查找{ List *p; p=ptr->next; while (p && p->data!=x) { p=p->next; } printf ("%d\n",p->data);}List *Insert(Elementype x,int i,List *ptr) ///插入新元素 { List *p=ptr; List *s; int j=0; while (p && j<i-1) { p=p->next; ++j; } if (!p || j>i-1) { return; } s=(List*)malloc(sizeof(List)); s->data=x; s->next=p->next; p->next=s; return 1; }List *Delete (int i,List *ptr) ///删除元素 { List *p=ptr; List *q; int x; int j=0; while (p->next && j<i-1) { p=p->next; ++j; } if (p->next==NULL || j>i-1) printf ("NOT Found!\n"); q=p->next; p->next=q->next; x=q->data; printf ("%d\n",x); free(q); return 0; }int main (){ List *ptr,*p; printf ("Please input the elements of list (endinput when you input '10')\n"); p=Init_ListEnd(ptr); Printf_List(p); int n; while (1) { int m; printf ("please choose the operate\n1:Find element\n2:Insert new element\n3:Delete element\n"); scanf ("%d",&m); switch (m) { case 1: { printf ("Please input position of the element you want to find\n"); scanf ("%d",&n); Find_posi(n+1,p); }break; case 2: { int i,h; printf ("Please input the position and the element you want to insert\n"); scanf ("%d%d",&i,&h); Insert (h,i,p); Printf_List(p); }break; case 3: { int w; printf ("Please input the element you want to delete\n"); scanf ("%d",&w); Delete(w,p); Printf_List(p); }break; } } return 0;}
0 0
- 链式结构实现线性表的基本操作
- 链式存储结构的线性表基本实现
- 数据结构-链式线性表基本操作实现
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 链式结构线性表的实现
- 链式结构线性表的实现
- java实现的链式线性表结构
- 线性表的链式结构实现
- [C++]数据结构:线性表的公式化描述和链式描述的结构特点与基本操作
- [C++]数据结构实验03:链式结构线性表的基本操作
- 迎接2012之集合和泛型(2)------线性表的链式结构基本实现
- 线性表的链式结构
- 利用顺序结构实现线性表的基本操作
- 顺序结构实现线性表的基本操作
- C++实现顺序结构线性表的基本操作
- 线性表的链式存储结构与操作
- 线性表的链式存储结构及操作
- 线性表的链式存储(单链表)的基本操作
- 关于PHP项目初学
- java通过经纬度计算两个点的之间的距离的算法
- OpenCV配置(Java篇)
- POJ3632解题报告
- android的activity再按一次退出程序
- 链式结构实现线性表的基本操作
- 高级指针: 数组
- 【codevs2039】骑马修栅栏,欧拉回路
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新加载 OnCreate 的解决方案
- webstorm窗口去掉竖线
- c#基础加减法
- 2 Dimension list (list中的list)game 2048 part2
- Jailkit 限制Linux用户访问权限
- Python入门教程(适用有其他编程语言经验和计算机基础的人)