创建一个静态链表,通过输入元素及位置插入一个元素,然后通过输入删除元素的位置删除元素。
来源:互联网 发布:阿里云代码托管 收费 编辑:程序博客网 时间:2024/05/16 09:02
头文件:函数的声明
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LISTSIZE 100typedef char ElemType;typedef struct{ElemType data;//数据域int cur;//指针域,指向直接后继元素}SListNode;//结点空间typedef struct{SListNode list[LISTSIZE];//数组int av;//备用链表的指针}SLinkList;//链表空间void InitSList(SLinkList *L);//静态链表初始化int AssignNode(SLinkList L);//分配结点void FreeNode(SLinkList L,int pos);//回收结点void InsertSList(SLinkList *L,int i,ElemType e);//插入操作void DeleteSList(SLinkList *L,int i,ElemType *e);//删除操作void PrintDList(SLinkList L,int n);//输出静态链表
函数的定义
#include "静态链表.h"void InitSList(SLinkList *L)//静态链表初始化{int i;for(i = 0;i < LISTSIZE;i++){(*L).list[i].cur = i+1;}(*L).list[LISTSIZE].cur = 0;(*L).av = 1;}int AssignNode(SLinkList L)//分配结点(从备用链表中取出下一个结点空间,分配给要插入链表的元素){int i;i = L.av;L.av = L.list[i].cur ;return i;}void FreeNode(SLinkList L,int pos)//回收结点(使空闲结点成为备用链表中的结点){L.list[pos].cur = L.av ;L.av = pos;}void InsertSList(SLinkList *L,int i,ElemType e)//插入操作{int j,k,x;k = (*L).av ;(*L).av = (*L).list[k].cur ;(*L).list[k].data = e;j = (*L).list[0].cur ;for(x = 1;x < i-1;x++){j = (*L).list[j].cur ;}(*L).list[k].cur = (*L).list[j].cur ;(*L).list[j].cur = k;}void DeleteSList(SLinkList *L,int i,ElemType *e)//删除操作{int j,k,x;j = (*L).list[0].cur ;for(x = 1;x < i-1;x++){j = (*L).list[j].cur ;}k = (*L).list[j].cur ;(*L).list[j].cur = (*L).list[k].cur ;(*L).list[k].cur = (*L).av ;*e = (*L).list[k].data ;(*L).av = k;}void PrintDList(SLinkList L,int n)//输出静态链表{int j,k;k = L.list[0].cur ;for(j = 1;j <= n;j++){printf("%4c",L.list[k].data);k = L.list[k].cur;}printf("\n");}
函数的应用
#include "静态链表.h"void InitSList(SLinkList *L)//静态链表初始化{int i;for(i = 0;i < LISTSIZE;i++){(*L).list[i].cur = i+1;}(*L).list[LISTSIZE].cur = 0;(*L).av = 1;}int AssignNode(SLinkList L)//分配结点(从备用链表中取出下一个结点空间,分配给要插入链表的元素){int i;i = L.av;L.av = L.list[i].cur ;return i;}void FreeNode(SLinkList L,int pos)//回收结点(使空闲结点成为备用链表中的结点){L.list[pos].cur = L.av ;L.av = pos;}void InsertSList(SLinkList *L,int i,ElemType e)//插入操作{int j,k,x;k = (*L).av ;(*L).av = (*L).list[k].cur ;(*L).list[k].data = e;j = (*L).list[0].cur ;for(x = 1;x < i-1;x++){j = (*L).list[j].cur ;}(*L).list[k].cur = (*L).list[j].cur ;(*L).list[j].cur = k;}void DeleteSList(SLinkList *L,int i,ElemType *e)//删除操作{int j,k,x;j = (*L).list[0].cur ;for(x = 1;x < i-1;x++){j = (*L).list[j].cur ;}k = (*L).list[j].cur ;(*L).list[j].cur = (*L).list[k].cur ;(*L).list[k].cur = (*L).av ;*e = (*L).list[k].data ;(*L).av = k;}void PrintDList(SLinkList L,int n)//输出静态链表{int j,k;k = L.list[0].cur ;for(j = 1;j <= n;j++){printf("%4c",L.list[k].data);k = L.list[k].cur;}printf("\n");}
0 0
- 创建一个静态链表,通过输入元素及位置插入一个元素,然后通过输入删除元素的位置删除元素。
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置
- 创建一个链表,插入删除,指定元素
- 删除一个数组中指定位置的元素
- 顺序表中静态顺序表的创建、插入和删除一个元素(源码分析)
- 动态的创建一个元素 createElement 和删除一个元素
- 数组元素的删除、首元素和尾元素的删除、任意位置元素的删除
- 数组任意位置插入元素,删除特定元素
- 实现在一个数组指定位置添加元素和删除元素的功能
- 通过reverse_iterator删除元素
- 简单顺序表的插入,删除,指定位置,指定元素的插入删除操作
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- 删除链表中指定位置的元素
- c语言:【顺序表】静态顺序表的删除指定位置元素Erase、删除指定元素Remove
- 删除vector指定位置的元素
- 通过反射输入一个类,打印出类中所有元素
- c删除一个元素
- WPF 元素相对另外一个元素的 相对位置
- Length of Last Word
- An error was encountered while running(Domain=LaunchSerivcesError, Code=0)
- 转载大神IOS开发系列【15】--音频视频使用
- HDU 1176 免费馅饼 (DP)
- shopex使用经验
- 创建一个静态链表,通过输入元素及位置插入一个元素,然后通过输入删除元素的位置删除元素。
- tomcat部署项目去掉ip和域名
- 基于AWS的媒体共享系统架构
- 创建一个完整的CCS工程(基于F2812)
- bootstrap在线设计,快速定制自己的网站!
- java 前台页面传到后台 乱码解决方案
- shopex虚拟分类后台不更新前台能更新问题
- An error was encountered while running(Domain=LaunchSerivcesError, Code=0)
- (最大化平均值)poj2976,Dropping tests