单链表操作的实验课
来源:互联网 发布:淘宝亿次元 编辑:程序博客网 时间:2024/05/22 16:58
单链表的操作
① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。
② 实现该线性表的遍历。
③ 在该单链表的第i个元素前插入一个整数。
④ 删除该单链表中的第i个元素,其值通过参数将其返回。
⑤ 建立两个按值递增有序的单链表,将他们合并成一个按值递减有序的单链表。要求利用原来
//链表的建立,插入,删除 ,合并链表;#include <stdio.h>#include <stdlib.h>typedef struct Link{int data;struct Link *next;}LNode,*LinkList;void Create_Link(LinkList &L){//链表的建立 LinkList p,cur;L=(LinkList)malloc(sizeof(LNode));int n;cur=L;printf("数据个数:"); scanf("%d",&n);for (int i=1;i<=n;i++){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);cur->next=p;cur=p;}cur->next=NULL;}void Display_Link(LinkList L){//链表的遍历 LinkList cur;cur=L->next;while(cur){printf("%d ",cur->data);cur=cur->next;}putchar('\n');}void Insert_Link(LinkList &L,int i,int e){//插入到第i个后面 int j=1;LinkList cur;cur=L->next;while(j<=i-2 && cur){cur=cur->next;j++;}if(j!=i-1){printf("输入位置不合法.\n");return ;}LinkList p=(LinkList)malloc(sizeof(LNode));p->data=e;p->next=cur->next;cur->next=p;}void Delete_Link(LinkList &L,int i){//删除第i个位置的数,并用e来返回LinkList s;LinkList cur;int j=1;cur=L->next;while(j<=i-2 && cur->next){cur=cur->next;j++;}if(j!=i-1){printf("输入位置不合法.\n");return ; }s=cur->next;cur->next=s->next;printf("删除的数为:%d\n",s->data);free(s);}void Destroy(LinkList L){//销毁 LinkList cur,p;cur=L->next;while(cur){p=cur;cur=cur->next;free(p);}printf("操作结束.\n");}void Merge(LinkList L,LinkList M,LinkList &K){//两个链表合并,头插LinkList cur1,cur2,temp;K=(LinkList)malloc(sizeof(LNode));K->next=NULL;cur1=L->next;cur2=M->next;while(cur1 && cur2){if(cur1->data<cur2->data){temp=cur1->next;cur1->next=K->next;K->next=cur1;cur1=temp;}else{temp=cur2->next;cur2->next=K->next;K->next=cur2;cur2=temp;}}while(cur1){temp=cur1->next;cur1->next=K->next;K->next=cur1;cur1=temp;}while(cur2){temp=cur2->next;cur2->next=K->next;K->next=cur2;cur2=temp;}}int main(){int i,e;LinkList L,M,K;Create_Link(L);Display_Link(L);Create_Link(M);Display_Link(M);Merge(L,M,K);Display_Link(K);printf("输入插入的位置和数据:");scanf("%d %d",&i,&e);Insert_Link(K,i,e);Display_Link(K);printf("输入要删除数据的位置:");scanf("%d",&i);Delete_Link(K,i);Destroy(K);return 0;}
小白学习链表,但请多多指点,大神不喜勿喷
0 0
- 单链表操作的实验课
- 数据结构实验报告单链表的基本操作
- [实验二] 单链表的基本操作
- 实验2 单链表的创建和操作
- 图的操作实验
- 数据结构实验:图的操作
- 实验 队列的有关操作
- 实验 栈的有关操作
- 实验 图的基本操作
- 实验 排序的有关操作
- 数据结构实验一--单链表的基本操作的算法
- 南邮数据结构实验1.2 单链表的操作
- 单链表的基本操作及其应用(实验2.1)
- 实验2.2 运用单链表实现对数据的基本操作
- 单链表的基本操作及其应用(实验2.1)
- 【数据结构作业】实验三 单链表的基本操作(必做,设计性实验,4学时)
- 数据结构上机实验:单链表操作
- 实验三:单链表及其操作
- Rqnoj 题目 72拔河比赛 (01背包)
- does not have write access to 'C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET File
- UVA - 10340 All in All
- 高精度乘法(压位)
- 使用json-lib 把javabean转换成json串
- 单链表操作的实验课
- linux线程通信
- DSP投放进阶指南
- 算法导论 XOR双向循环链表——内存高效链表
- 我也工作了
- HDU 5463 Clarke and minecraft
- C语言算法训练1
- lintcode-在二叉查找树中插入节点-85
- Host "localhost " is not allowed to connect to mysql server解决方法