• 大小: 10KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: C语言  

资源简介

菜单: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

评论

共有 条评论