#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
void GetElem_L(LinkList L,int i,int e){
//L为带头结点的单链表的头指针。
//当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR
LNode *p = L->next;int j = ;
while(p&&j<i){
p = p->next;++j;
}
e = p->data;
printf("获取的值:%d\n",e);
}//GetElem_L
void ListInsert_L(LinkList L,int i,int e){
//在带头节点的单链线性表L中第i个人位置之前插入元素e
LinkList p = L; int j=;
while(p&&j<i-){p=p->next;++j;} //寻找第i-1个节点。
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;s->next = p->next;
p->next = s;
printf("插入成功。");
}//ListInsert_L
int ListDelete_L(LinkList L,int i,int e)
{
LinkList p = L;int j = ;
while(p->next&&j<i-){//寻找第i个节点并令p指向其前趋
p = p->next; ++j;
}
LNode *q = p->next; p->next = q->next;
e = q->data; free(q);
return e;
}//ListDelete_L
void CreateList_L(LinkList *L,int n){
(*L) = (LinkList)malloc(sizeof(LNode));
(*L)->next = NULL; //建立一个带头结点的单链表
for(int i = n;i>;--i){
LinkList p = (LinkList)malloc(sizeof(LNode)); //生成新的结点
scanf("%d",&p->data);
p->next = (*L)->next; (*L)->next = p;
}
printf("表格创建成功");
}//CreateList_L
void MergeList_L(LinkList La,LinkList Lb,LinkList Lc){
//已知单链线性表La和Lb的元素按值非递减排列。
//归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列。
LNode *pa = La->next; LNode *pb = pb->next;
LNode *pc = Lc->next;
Lc = pc = La;
while(pa && pb){
if(pa->data <= pb->data){
pc->next = pa;pc = pa;pa = pa->next;
}
else{pc->next = pb;pc = pb;pb = pb->next;}
}
pc->next = pa ? pa:pb; //插入剩余段。
free(Lb);
}//MergeList_L
void main()
{
LinkList L;
int n;
printf("请输入数据的数量:\n");
scanf("%d",&n);
CreateList_L(&L,n);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
int i;
scanf("%d",&i);
int g=;
while(g==)
{
if(i==){
int e;
printf("请输入你们要插入的元素:\n");
scanf("%d",&e);
printf("请输入你想要插入的位置:\n");
int k;
scanf("%d",&k);
ListInsert_L(L,k,e);
printf("请选择你是否要退出还是继续:1为继续;2为退出\n");
g=;
scanf("%d",&g);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
i=;
scanf("%d",&i);
}
if(i==){
int e;
printf("请输入你想要获取元素的位置:\n");
int k;
scanf("%d",&k);
GetElem_L(L,k,e);
printf("请选择你是否要退出还是继续:1为继续;2为退出\n");
g=;
scanf("%d", &g);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
i=;
scanf("%d", &i);
}
if(i==){
int e;
printf("请输入你想要删除的位置:\n");
int k;
scanf("%d",&k);
ListDelete_L(L,k,e);
printf("请选择你是否要退出还是继续:1为继续;2为退出\n");
g=;
scanf("%d", &g);
printf("请选择你想要进行的操作:1代表插入元素;2代表获得元素;3代表删除元素;\n");
i=;
scanf("%d", &i);
} }
return ;
}

最新文章

  1. mysql入门
  2. E-R图的基础练习
  3. oracle 根据字段分组后,将组内的数据根据字段排序
  4. Shtml妙用
  5. 获取网络IP地址
  6. Linux中crontab的坑爹环境变量问题
  7. iOS -动态可变参数
  8. WSDL 文档解析
  9. Android list1去除list2中的元素
  10. 全面理解Unity加载和内存管理
  11. iOS开发 socket, 全局socket
  12. 推荐三个 VSCode 摸鱼插件
  13. vue性能
  14. LeetCode编程训练 - 折半查找(Binary Search)
  15. 学号 20175223 《Java程序设计》第9周学习总结
  16. Oracle 监听器日志配置与管理
  17. 1159 Palindrome
  18. GIT库代码管理规范
  19. angular五种服务详解
  20. 给iOS开发新手送点福利,简述UIDatePicker的用法

热门文章

  1. SQL之 UNION ALL 和UNION
  2. nginx+tomcat 配置负载均衡集群 (转载)
  3. oracle之 RAC Interconnect之HAIP
  4. 使用AWK分析Oracle系统锁定、Hang状态
  5. bzoj 1185 [HNOI2007]最小矩形覆盖——旋转卡壳
  6. 雅虎CSS初始化代码
  7. Java中的&lt;&lt; 和 &gt;&gt; 和 &gt;&gt;&gt; 详细分析
  8. Vue.js: temple
  9. 设计模式之——Composite组合模式
  10. springmvc 打包遇到的问题