期末了,赶紧复习一波,手打一份书上的代码以便随时查阅

第二章:

//顺序表存储结构

#define MAXSIZE 100

typedef struct

{

Elemtype *elemt;

int length;

}Sqlist;

Status InitList(Sqlist &L)

{

L.elemt=new Elemtype[MAXSIZE];

if(!L.elemt) exit(OVERFLOW);

// L.length=MAXQSIZE;

L.length=0;

return OK;

}

Status GetElemt(Sqlist &L,int i,Elemtype &e)

{

if(i<1||i>L.length) return ERROR;

// [错了]e=L->elemt[i];

e=L->elemt[i-1];

return OK;

}

Status LocateElem(Sqlist &L,Elemtype e)

{

for(i=0;i

{

if(L.elemt[i]==e) return i+1;

}

return 0;

}

//Status SearchElemt(Sqlist &L,int &j,Elemtype e)

//{

// if(j<1||j>L.length) return ERROR;

// for(int i=0;i

// if(L.elemt[i]==e)

// {

// j=i+1;

// return OK;

// }

// return ERROR;

//}

Status ListInsert(Sqlist &L ,int i,Elemtype e)

{

if(i<1||i>L.length) return ERROR;//忘记了

if(L.length==MAXSIZE)return ERROR;//又忘记了

for(j=L.length-1;j>=i-1;--j)

{

L.elemt[j+1]=L.elemt[j];

}

L.elemt[i-1]=e;

L.length++;

return OK;

}

Status ListDelete(Sqlist &L,int i)

{

if(i<1||i>L.length) return ERROR;//忘了

// for(j=i-1;j

// {

// L.elemt[j]=L.elemt[j+1];

// }

for(j=i;j<=L.length-1;++j)

L.elemt[j-1]=L.elemt[j];

L.length--;

return OK;

}

//单链表的存储

typedef struct LNode

{

ElemType data;

struct LNode * next;

}LNode,*Linklist;

Status InitLink(Linklist &L)

{

L=new LNode;

// if(!L) exit(OVERFLOW);

L->next=NULL;

return OK;

}

//单链表的取值

Status GetElemt(Linklist &L,int i,Elemtype &e)

{

p=L->next;

j=1;

while(p&&j

{

p=p->next;++j;

}

if(!p||j>i) return ERROR;

e=p->data;

return OK;

}

//单链表的按值查找

LNode LocateElem(Linklist &L,Elemtype e)

{

p=L->next;j=1;

// while(p->data!=e)

// {

// p=p->next;

// }

// return p;

while(p&&p->data!=e)

p=p->next;

return p;

}

//单链表的插入

Status ListInsert(Linklist &L,int i,Elemtype e)

{

// p=L->next;j=1;

p=L;j=0;

while(p&&j

{

p=p->next;++j;

}

if(!p||j>i-1) return ERROR;

s=new LNode;

s->data=e;

s->next=p->next;

p->next=s;

return OK;

}

//删除

Status DeleteElemt(Linklist &L,int i)

{

p=L;j=0;

while(p->next&&j

{

p=p->next;++j;

}

if(!p->next||j>i-1) return ERROR;

s=p->next;

p->next=s->next;

delete s;

return OK;

}

//单链表的创建--前插

void CreateList_H(Linklist &L,int n)

{

L=new LNode;

L->next=NULL;

for(i=-0;i

{

p=new LNode;

cin>>p->data;

p->next=L->next;

L->next=p;

}

}

//单链表的创建——尾插

void CreateList_T(Linklist &L,int n)

{

L=new LNode;

L->next=NULL;

r=L;

for(i=0;i

{

p=new LNode;

cin>>p->data;

p->next=NULL;

r->next=p;

r=p;

}

}

//双向链表

typedef struct DuLNode

{

Elemtype data;

struct DuLNode *ptr;

struct DuLNode *next;

}DulNode,*DuLinkList;

//双向链表的插入

Status ListInsert_Dul(DuLinkList &L,int i,Elemtype e)

{

// p=L;j=1;

// while(p&&j

// {

// p=p->next;++j;

// }

// if(!p||j>i-1) return ERROR;

//

// s=new DulNode;

// s->data=e;

// s->next=p->next;

// s->ptr=p->ptr;

// p->next->ptr=s;

// p->next=s;

if(!(p=GetElem_Dul(L,i)))

return ERROR;

s=new LNode;

s->data=e;

s->ptr=p->ptr;

s->next=p;

p->ptr->next=s;

p->ptr=s;

return OK;

}

//双向链表的删除

Status ListDelete_Dul(Linklist &L,int i)

{

if(!(p=GetElemt_Dul(L,i)))

return ERROR;

p->next->ptr=p->ptr;

p->ptr->next=p->next;

delete p;

return OK;

}

第三章:

#define MAXSIZE

typedef struct

{

SElemtTpye *base;

SElemtTpye *top;

int stacksize;

}SqStack ;

Status InitStack(SqStack &S)

{

S.base=new SElemtTpye[MAXSIZE];

// [危阻]if(!S.basa)return ERROR;

if(!S.base) exit(OVERFLOW);

S.top=S.base;

S.stacksize=MAXSIZE;

return OK;

}

Status Push(SqStack &S,SElemtTpye e)

{

if(S.top-S.base==S.stacksize) return ERROR;

*S.top=e;

S.top++;

// S.stacksize++;

return OK;

}

Status Pop(SqStack &S,SElemtTpye &e)

{

if(S.top==S.base) return ERROR;

S.top--;

e=*S.top;

// S.stacksize--;

return Ok;

}

SElemtTpye GetTop(SqStack &S)

{

if(S.top==S.base) return ERROR;

// S.top--;

// return *S.top;

return *(S.top-1);

}

//全媚

typedef struct StackNode

{

struct StackNode *next;

ElemtTpye data;

}StackNode,*LinkStack;

Status InitStack(LinkStack &S)

{

S=NULL;

return OK;

// S=new StackNode;

// if(!S) return ERROR;

// S.next=NULL;

// return OK;

}

Status Push(LinkStack &S,ElemtTpye e)

{

p=new StackNode;

if(!p) return ERROR;

p->data=e;

p->next=S;

S=p;

return OK;

}

Status Pop(LinkStack &S,ElemtTpye &e)

{

if(!S)return ERROR;

e=S.data;

p=S;

S=S->next;

delete p;//梨芝瞥慧阻

return OK;

}

ElemtTpye GetTop(LinkStack &S)

{

if(!S) return ERROR;

return S->data;

}

#define MAXQSIZE 100

typedef struct

{

QElemtype *base;

int front;

int rear;

}SqQueue;

Status InitQueue(SqQueue &Q)

{

Q.base=new QElemtype[MAXQSIZE];

if(!Q.base) exit(OVERFLOW);

Q.front=Q.rear=0;

return OK;

}

Status EnQueue(SqQueue &Q,Elemtype e)

{

if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR;

Q.base[Q.rear]=e;

Q.rear=(Q.rear+1)%MAXQSIZE;

return OK;

}

Status DeQueue(SqQueue &Q,Elemtype &e)

{

if(Q.rear==Q.front) return ERROR;

e=Q.base[Q.front];

Q.front=(Q.front+1)%MAXQSIZE;

return OK;

}

Elemtype GetTop(SqQueue &Q)

{

if(Q.front==Q.base) return ERROR;

return Q.base[Q.front];

}

//全錦

typedef struct QNode

{

Elemtype data;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct

{

QueuPtr front;

QueuePtr rear;

}*LinkQueue;

Status InitQueue(LinkQueue &Q)

{

Q.front=Q.rear=new QNode;

Q.front->next=NULL;

return OK;

}

Status EnQueue(LinkQueue &Q,Elemtype e)

{

p=new QNode;

p->data=e;

p->next=NULL;

Q.rear->next=p;

Q.rear=p;

return OK;

}

Status DeQueue(LinkQueue &Q,Elemtype &e)

{

if(Q.front==Q.rear)return ERROR;

p=Q.front->next;

e=p->data;

Q.front->next=p->next;

if(p==Q.rear) Q.rear=Q.front;

delete p;

return OK;

}

c语言教程苏小红,《数据结构(C语言)》苏小红 课本案例相关推荐

  1. c语言 静态链表插入排序,数据结构C语言版 表插入排序

    西门豹治邺奇计 数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P2 ...

  2. c语言打印树形图形,数据结构C语言版树形结构.ppt

    数据结构C语言版树形结构 St中元素 算法执行的操作 ch AC k=2 , AC 建立E结点,因k=1,将其作为C结点的左孩子结点 E AC C结点进栈,k=1 ( A 建立C结点,因k=2,将其作 ...

  3. 数据结构c语言课程设计报告,(数据结构c语言课程设计报告.doc

    (数据结构c语言课程设计报告 数据结构 课程设计报告 设计题目:迷宫求解 专 业 机电一体化 班 级 08专接本 学 生 学 号 104910252011 指导教师 高在村 完成时间 2011. 5 ...

  4. 【C语言教程】1、C 语言简介

    C 语言简介 历史 C 语言最初是作为 Unix 系统的开发工具而发明的. 1969年,美国贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了 ...

  5. c语言教程在线阅读,《C语言基础教程》.doc

    <C语言基础教程>.doc C语言基础教程(一) 网上收集整理 Turbo C语言概述 1.1 C 语言的产生与发展 C 语言是1972年由美国的Dennis Ritchie设计发明的, ...

  6. c语言编程队列题,数据结构C语言编程 队列.doc

    数据结构C语言编程 队列 #include #include #define MAXQSIZE 10 typedef struct { int *base; //存储空间的起始地址,即数组的首地址,即 ...

  7. 猴子选王c语言链表程序代码,数据结构(C语言)用栈和链表编写猴子选大王程序...

    <数据结构(C语言)用栈和链表编写猴子选大王程序>由会员分享,可在线阅读,更多相关<数据结构(C语言)用栈和链表编写猴子选大王程序(3页珍藏版)>请在人人文库网上搜索. 1.i ...

  8. 数据结构c语言版代码答案,数据结构C语言版部分习题及答案..doc

    数据结构C语言版部分习题及答案. 第二章 习题与解答 一 判断题 1.线性表的逻辑顺序与存储顺序总是一致的. 2.顺序存储的线性表可以按序号随机存取. 3.顺序表的插入和删除操作不需要付出很大的时间代 ...

  9. 初识c语言教程,第1课C语言教程一: 初识C程序.doc

    第1课C语言教程一: 初识C程序 第1课 初识C程序 教学目标 1.计算机语言介绍 2.了解C语言 3.如何学好C语言(多做题,多上机调试程序) 4.C语言上机调试环境 教学过程 计算机程序设计语言的 ...

  10. c语言如何编程硬件,硬件C语言教程开篇——我对c语言的理解

    对于没有编程经历的人来说,初次听说 C语言 这个概念是一种很奇怪的感觉,C语言是什么,是一种外星语言么?为什么叫C语言呢?它是哪国说的话呢? 那"语言"是个什么概念呢?百度百科上解 ...

最新文章

  1. 爬虫之selenium替换user-agent
  2. python下载安装教程2.7-Linux下安装python-2.7
  3. python环境变量的配置 alias_vim-python环境配置
  4. (转)一个华科研究生导师的肺腑之言
  5. 【开发工具之Spring Tool Suite】6、用Spring Tool Suite简化你的开发
  6. linux系统创建lvm卷,Linux逻辑卷LVM实现
  7. @RequestBody 的正确使用办法
  8. 萌新程序员找工作该怎么写简历?
  9. 路面压电发电,应该有前途
  10. Map接口及其实现类
  11. mysql网站设计_Flask+Mysql搭建网站之网页设计
  12. 华为虚拟一键部署服务器,服务器一键部署
  13. 学堂在线-清华大学-操作系统实验Lab1【练习5-6】
  14. 怎么样在腾讯云服务器桌面环境安装
  15. Android 疑难杂症
  16. 别再提程序员应届年薪20万了,人工智能已经年薪60万了!
  17. CSS--滚动条样式,鼠标点击小手,文字省略显示
  18. setwd的cannot change working directory处理
  19. iphone4 美版电信烧号6.1.3电话号码括号问题解决办法
  20. 【转】手机软件商店(wiki)

热门文章

  1. ffmpeg mp4 html5,FFMPEG mkv to mp4 conversion lacks audio in HTML5 player
  2. Vue源码学习: 关于对Array的数据侦听
  3. day14 Python函数
  4. 基于IdentityServer4的单点登录——项目基本结构与流程
  5. IO流-ReadLine方法的原理 自定义BufferedReader
  6. 关于C#日期格式化问题
  7. PHP函数调用及循环体内定义大型变量效率的研究
  8. 数据库访问接口的代码
  9. python 哥德巴赫猜想的验证
  10. PHP中include与require的特点和区别说明