资源简介
菜单:1.尾插法(用尾插法建立链表);2.头插法(用头插法建立链表);3.显示(打印链表);4.求表长(输出链表长度);5.后插(在指定节点后面插入);6.前插(在指定节点前面插入);7.按位置插入(将元素插入指定位置);8.排序(将元素升序排列);9.按位置查找(查找指定位置元素值);10.逆置(通过改变指针的方式将元素逆序);11.按元素查找(查找指定元素是否存在);12.按位置删(删除指定位置元素);13.按元素删(删除指定元素);14.清空(清除所有元素,但链表未销毁,还可以继续进行操作);15.按位置修改(修改指定位置的元素);16.修改元素(将链表中所有与指定元素相等的元素删除);17.销毁(销毁整个链表,无法再对链表进行其他操作);
代码片段和文件信息
//双向链表
#include
#include
#include
typedef int DataType;
typedef struct DListNode
{
DataType data;
struct DListNode *prev;
struct DListNode *next;
}DListNode;
typedef struct DList
{
DListNode *first;
DListNode *last;
size_t size;
}DList;
void DListInit(DList *list);//初始化
void DListPushBack(DList *list DataType x);//尾插法创建双向链表
void DListPushFront(DList *list DataType x);//头插法创建双向链表
size_t DListLen(DList *list);//求表长
void DListShow(DList *list);//显示双向链表
DListNode *DListFindData(DList *list DataType x);//按元素查找
DListNode *DListFindSite(DList *list size_t x);//按位置查找
int DListPushRear(DList *list DListNode *sDataType key);//后插运算
int DListPushFormer(DList *list DListNode *s DataType key);//前插运算
int DListPushSite(DList *list size_t x DataType key);//按位置插入
int DListSiteAlter(DList *list size_t x DataType key);//按位置修改
int DListDataAlter(DList *list DataType x DataType key);//按元素修改,将所有x修改为key返回修改x的个数
int DListSiteDelete(DList *list size_t x);//按位置删除
int DListDataDelete(DList *list DataType key);//按元素删除,返回删除x的个数
void DListEmpty(DList *list);//清除所有元素
void DListReverse(DList *list);//逆置
void DListEmptyPlus(DList *list);//销毁
void DListSort(DList *list);//排序
void Menu()
{
printf(“ 选项\n“);
printf(“* 1.尾插法 2.头插法 *\n“);
printf(“* 3.显示 4.求表长 *\n“);
printf(“* 5.后插 6.前插 *\n“);
printf(“* 7.按位置插入 8.排序 *\n“);
printf(“* 9.按位置查找 10.逆置 *\n“);
printf(“* 11.按元素查找 12.按位置删 *\n“);
printf(“* 13.按元素删除 14.清空 *\n“);
printf(“* 15.按位置修改 16.修改元素 *\n“);
printf(“* 17.销毁 0.退出 *\n“);
}
int main()
{
int input = 0;
DList mylist;
DListInit(&mylist);
do
{
int k = 0;
size_t x = 0;
DataType key = 0;
DListNode *p = NULL;
Menu();
printf(“请选择:“);
scanf(“%d“ &input);
switch (input)
{
case 1:
printf(“请输入元素(以-1结束):“);
while (scanf(“%u“ &x) x != -1)
DListPushBack(&mylist x);
break;
case 2:
printf(“请输入元素(以-1结束):“);
while (scanf(“%u“ &x) x != -1)
DListPushFront(&mylist x);
break;
case 3:
DListShow(&mylist);
break;
case 4:
printf(“表长 = %u\n“DListLen(&mylist));
break;
case 5:
printf(“你要在哪个元素后面插入:“);
scanf(“%u“ &x);
printf(“请输入要插入的元素:“);
scanf(“%u“ &key);
if (DListPushRear(&mylist DListFindData(&mylist x) key) == 0)
printf(“插入失败!\n“);
else
printf(“插入成功!\n“);
break;
case 6:
printf(“你要在哪个元素前面插入:“);
scanf(“%u“ &x);
printf(“请输入要插入的元素:“);
scanf(“%u“ &key);
if (DListPushFormer(&mylist DListFindData(&mylist x) key) == 0)
printf(“插入失败!\n“);
else
printf(“插入成功!\n“);
break;
case 7:
printf(“请输入要插入的位置及元素:“);
scanf(“%u %u“ &x &key);
if (DListPushSite(&mylist x key) == 0)
printf(“输入位置有误,插入失败!\n“);
else
printf(“插入成功!\n“);
break;
case 8:
DListSort(&m
- 上一篇:将闲置硬盘打造成你的私有云
- 下一篇:JS自动复制吱口令
相关资源
- 四路循迹小车代码
- Modbus_RTU.rar
- PID算法控制直流电机转速仿真与C程序
- pc串口控制流水灯的程序
- 《C程序设计》教案 谭浩强版
- 地铁自动售票机计算当前站和目的站
- 《C程序设计语言》第二版 中文高清
- 数据结构银行业务模拟
- msp430代码模拟spi
- 神经元 ML模型
- 括号嵌套问题课程设计
- linux文件传输项目源码
- msp430锁相环源程序
- 基于单片机的智能交通灯PROTEUS仿真图
- MPU6050(STM32 DMP).rar
- 锐格实验.zip
- 复数的四则运算数据结构 实验
- 顺序栈,压栈、弹栈、获得栈顶元素
- Proteus8.9 VSM Studio WINAVR编译器仿真ATM
- Proteus8.9 VSM Studio WINAVR编译器仿真ATM
- x9c103控制程序
- 银行家算法课程设计报告
- 最小生成树----源码
- MPEG2标准的编解码器
- 电梯模拟 用C写的 很好的一个图形化
- 江苏大学885程序设计编程题答案
- gmp-6.1.2静态库-已编译
- Keil uVision4 STC库文件
- C51与ADXL345通信外加上位机显示程序
- GPS数据解析程序原创
评论
共有 条评论