考研复习(2)链表操作
2.在主函数之后定义的函数须在主函数之前申明;
3.要改变链表结构,续传递指向头节点指针的指针;
4.不能直接搬数据结构上的伪代码(严玮文版),还是要自己思考,最好能够画图;
5.调试时出现死循环的话,在终端键入:ps aux
查看死循环进程的pid,然后键入: kill -9 进程的pid 就能终止进程了.
#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}Lnode,*LinkList;
int ListInsert(LinkList *L, int i,ElemType e);//插入元素
int ListDel(LinkList *L, int i);//删除元素
ElemType GetElem(LinkList L,int i);//获得第i个节点
void del(LinkList *L,int mink,int maxk);//删除区间节点
void inverse(LinkList *L);//逆置链表
int main()
{
LinkList Q;
initLink(&Q);
ListInsert(&Q,1,'f');
ListInsert(&Q,1,'e');
ListInsert(&Q,1,'d');
ListInsert(&Q,1,'c');
ListInsert(&Q,1,'a');
display(Q);
del(&Q,98,100);
display(Q);
inverse(&Q);
printf("After invert\n");
display(Q);
ListDel(&Q,1);
display(Q);
printf("The No.2 Element is:%c",GetElem(Q,2));
return 1;
}
void initLink(LinkList *L)//Only transport the address can change the Link
{
*L=(LinkList)malloc(sizeof(Lnode));
(*L)->next=NULL;
}
ElemType GetElem(LinkList L,int i)
{
Lnode *p=L->next;
int j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i) return 0;
return p->data;
}
void display(LinkList L)
{
Lnode *p=L->next;
if(p==NULL) printf("No element~\n");
else
{
while(p)
{
printf("%5c->",p->data);
p=p->next;
}
}
printf("\n");
}
int ListInsert(LinkList *L, int i,ElemType e)
{
Lnode *p=*L;//p point to the first node
int j=0;
Lnode *s;
while(p&&j<i-1)//search the No.(i-1) node
{
p=p->next;
j++;
}
if(!p||j>i-1) return 0; //i<1 or >ListLenth+1
s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDel(LinkList *L, int i)
{
Lnode *p=*L;
Lnode *pre=p;
int j=0;
while(p&&j<i)//search the No.i node
{
printf("ALALLA");
pre=p;
p=p->next;
j++;
}
if(!p||j>i) return 0; //i<1 or >ListLenth+1
pre->next=p->next;
}
//delete the element in the sorted linklist that value between mink and maxk
void del(LinkList *L,int mink,int maxk)
{
Lnode *p=*L;
Lnode *pre;
Lnode *q,*s;
while(p&&p->data<mink)
{
pre=p;p=p->next;
printf("address of p:%d",p);
}
if(p)
{while(p&&p->data<maxk) p=p->next;}
pre->next=p;
/*free the memory
q=pre->next;
while(q!=p)
{
s=q->next;free(q);q=s;
}*/
}
//avert a linklist
void inverse(LinkList *L)
{
Lnode *p=*L;
Lnode *s;
p=p->next;//move a element
(*L)->next=NULL;
while(p)
{
//insert at front
s=p->next;
p->next=(*L)->next;
(*L)->next=p;
p=s;
}
}
转载于:https://blog.51cto.com/8672742/1368520
考研复习(2)链表操作相关推荐
- 天勤考研数据结构———单链表操作
定义单链表 typedef struct LNode{int data;struct LNode *next; }LNode; A\B皆为有序链表,合并排序到C中 头插法 void merge(LN ...
- 天勤考研数据结构———双链表操作
定义双链表的结构体类型 typedef struct DLNode{ int data; struct DLNode *next; struct DLNode *prior; ...
- 南京艺术学院计算机作曲,南京艺术学院932主科(上机操作计算机作曲应用)考研复习经验...
考研是一场持久战,在南京艺术学院932主科(上机操作计算机作曲应用)考研复习的过程中,难免会遇到各种各样的问题和挑战.在进入强化冲刺阶段之后,高强度的学习和心里压力更是让很多学子身心疲惫!如何少走弯路 ...
- 操作系统王道考研复习——第一章(计算机系统概述)
操作系统王道考研复习--第一章(计算机系统概述) 计算机系统概述 1.1操作系统的基本概念 1.1.1 操作系统的概念 1.1.2 操作系统的特征 1. 并发 2. 共享 3. 虚拟 4. 异步 1. ...
- 操作系统考研复习——第四章(文件管理)
操作系统考研复习--第四章(文件管理) 4. 文件管理 4.1 文件管理基础 4.1.1 文件的概念 1. 数据项.记录和文件 2. 文件属性 3. 文件系统的接口 4. 文件的基本操作 5. 文件的 ...
- 计算机专业考研复习要点,计算机专业考研的复习要点
计算机专业考研的复习要点 考生们在进行计算机专业考研的时候,要掌握好复习的要点.小编为大家精心准备了计算机专业考研复习的知识点,欢迎大家前来阅读. 计算机考研重点:运输层 1.TCP提供端对端.可靠的 ...
- 计算机考研压分的学校,篡改分数,恶意压分...考研院校的骚操作大盘点!小心避坑!...
篡改分数,恶意压分...考研院校的骚操作大盘点!小心避坑! 摘要:对考研的同学来说,择校是至关重要的一环.尤其是在往届考生群中,大家讨论最多的就是要不要换学校.一些同学经历了被歧视.专业课压分 作者 ...
- 考计算机科学考研老师问,名师答疑:计算机专业考研复习6问!
原标题:名师答疑:计算机专业考研复习6问! 摘要:针对计算机专业考研,有不少同学存在些疑问,下面是老师对集中问题给的回答. ▶问题一:计算机考研专业课2009年开始实行统考,老师能不能结合往年的计算机 ...
- 21考研复习规划和北邮计算机考研介绍
21考研复习规划和北邮计算机考研报名,学院,导师选择 同学让我给你介绍一下北邮计算机类专业考研的情况. 北邮共有四个学院都属于计算机类的,分为两大类,一类是考专业课803,另一类是考807,803包括 ...
- 计算机考研时间计划表,【考研复习计划】_这里有最详细的考研复习计划时间表...
英语 /词汇 /专业 原标题:这里有最详细的考研复习计划时间表! 考研准备阶段:(寒假-3月份) 一.选择院校.专业 1.确定想要学习方向,初步确立目标院校和专业 2.了解专硕和学硕的区别~ 2017 ...
最新文章
- 【Live555】liveMedia下载、配置、编译、安装、基本概念
- jpa中使用Query判断条件查询
- 【解决方案】istio-ingressgateway HTTP probe failed with statuscode: 503
- 莫队算法(Mo's_Algorithm)
- JAVA 设计模式 观察者模式
- Servlet萌新基础
- 计算机组成原理写一个运算器,计算机组成原理运算器的实现实验报告.doc
- Tensorflow2.0(1):加载图片数据集--TFRecord
- Spring Boot 全局异常捕获
- basys3利用microblaze连接Pmod ad2
- 让在vc6创建的程序中,控件可以随xp风格的改变而变化,不用再程序中添加代码来自己实现~...
- 软件再快不如自带:找不到电脑文件?教你这 3 个Mac搜索技巧
- 最小化JavaScript代码
- RTKLIB专题学习(八)—卫星星历和钟差
- ArcFace阈值选择
- TT 的旅行日记(Dijkstra)
- 运用Chrome浏览器ADB插件获取页面元素
- python的gmtime函数_学不会的Python函数——日期时间函数
- 神经网络中的BN理解
- Gradle排除依赖模块的某个类