单链表部分操作
来源:互联网 发布:免费数据接口 编辑:程序博客网 时间:2024/05/17 02:27
部分链表知识?
链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
链表操作:
我们将介绍几种简单的链表操作:
插入:头插.尾插.指定位置插入.
删除:头删.尾删.指定位置删除.
冒泡排序
1.链表的建立:
<span style="font-size:14px;">#ifndef _SEQLIST_D_H_#define _SEQLIST_D_H_#define MAX 100#include<stdio.h>#include<string.h>#include<stdlib.h>#include<assert.h>};typedef int DataType;typedef struct SeqList{ DataType Data[MAX]; int sz; //某一时刻顺序表中元素的个数}SeqList,*pSeqList</span>
2.链表中插入一个节点
<1.>头插(在头结点之后插入一个结点)
void PushFrontpSeqList pSeq,DataType x){int i = pSeq->sz-1;while(pSeq->sz==MAX){printf("顺序表已满,不能插入元素!!!");}for(i=pSeq->sz -1;i>0;i--){pSeq->Data[i+1] = pSeq->Data[i];}pSeq->Data [0] = x;pSeq->sz++;}
<2.>尾插(在尾部再插入一个结点)
void PushBack(pSeqList pSeq,DataType x){if((pSeq->sz)<MAX)pSeq->Data[pSeq->sz++]=x;elseprintf("顺序表已满!!!");}
<3.>指定位置插入(先找到指定位置,在进行插入)
void Insert(pSeqList pSeq,int pos,DataType x)//在指定位置插入一个元素{int i = pSeq->sz;pSeq->sz++;for(i=pSeq->sz-1;i>pos;i++){pSeq->Data[i+1]=pSeq->Data[i];}pSeq->Data[pos] = x;
3..链表中删除一个节点
《以下图依次为头删,尾删和指定位置删除》
<1.>头删(从头部删除一个节点)
void PopFront(pSeqList pSeq){ int i = 0;while(pSeq->sz==0){printf("顺序表为空!!");}for(i=0;i<pSeq->sz;i++){pSeq->Data[i]=pSeq->Data[i+1];}pSeq->sz--;}
<2.>尾删
void PopBack(pSeqList pSeq ){if(pSeq->sz==0)printf("顺序表为空!!!");elsepSeq->sz--;}
<3.>指定位置删除(先找到指定位置再进行删除)
void Remove(pSeqList pSeq,DataType x)//指定删除一个元素{int i=0;int j=0;for(i=0;i<pSeq->sz-1;i++){if(pSeq->Data[i]==x){j=i;for(j=i;j<pSeq->sz-1;j++){pSeq->Data[i]=pSeq->Data[i+1];}}}pSeq->sz--;
4.冒泡排序
void BottleSort(pLinkList pList) { assert(pList); if (NULL == pList->pHead || NULL == pList -> pHead->next ) { printf("linklist is empty or linklist has one element.\n"); return; } pLinkNode front = pList->pHead; pLinkNode tail = NULL; while (front != tail) { while (front->next != tail) { if (front->data > front->next->data) { DataType tmp = front->data; front->data = front->next->data; front->next->data = tmp; } front = front->next; } tail = front; front = pList->pHead; } }
0 0
- 单链表的部分操作
- 单链表部分操作
- 部分script cookies 操作
- 部分文件操作函数
- 链表 部分基本操作
- 数据库部分操作
- RedBoot部分操作命令
- .Net Excel 部分操作
- mysql日志部分操作
- MySQL 部分操作
- sqlite3 部分命令操作
- 部分linux目录操作
- Excel 部分操作总结
- NSString部分操作记录
- 店员收银操作部分
- android 数据库部分操作
- oracle 部分常用操作
- VSS 操作部分说明
- Android开发编码规范
- HDU1253-胜利大逃亡
- C语言联合、枚举、宏函数、结构体、函数
- select视图报错ORA-01031(oracle跨用户基表视图授权)
- 性能测试学习阶段
- 单链表部分操作
- ubuntu 14.04开启Mcrypt服务
- 创建视图 在单表上创建视图 在多表上创建视图
- java JVM : Xms Xmx PermSize MaxPermSize 区别
- iOS 读写plist文件(Date的存储有些怪异,原因不详)
- python :用numpy把数据写进文件
- 用C++写一个不能被继承的类
- rdp文件属性详细解析
- 中文不能输入超过20,英文输入不能超过40个