• 大小: 5KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: 双向链表  c语言  

资源简介

创建空的双向链表; 逐字符读取键盘输入的合法字符串,并依次插入到双向链表中。具体的,对于当前读取的字符, 构造其对应的结点。 利用头插法(或尾插法)将该结点按照键盘输入的顺序插入到双向链表中。 3、判断双向链表中各节点是否首尾对称,并打印出是否首尾对称的提示信息。(【提示】:可以利用双向链表的头指针和尾指针,其中头指针往链表尾部移动,尾指针向链表头部方向移动。当头尾指针最后能相遇时,则可认为输入字符串是首尾对称的。)

资源截图

代码片段和文件信息

// shiyan2.cpp : 此文件包含 “main“ 函数。程序执行将在此处开始并结束。
//

#include “pch.h“
#include 
#include 
#include 
#include 
#include 
using namespace std;

typedef char DataType;

typedef struct DListNode
{
DataType data; // 数据
struct DListNode * pPrev; // 指向上一个结点
struct DListNode * pNext; // 指向下一个结点
}DListNode *pDListNode;


//创建新结点
static pDListNode CreateNewNode(DataType data)
{
pDListNode pNewNode = (pDListNode)malloc(sizeof(DListNode));

if (NULL == pNewNode)
{
perror(“内存分配失败!\n“);
exit(-1);
}
else
{
pNewNode->data = data;
pNewNode->pPrev = NULL;
pNewNode->pNext = NULL;
}

return pNewNode;
}

//带头结点的双向链表的初始化
void DListInit(pDListNode * pHead)
{
int no_data = 0;

assert(NULL != pHead);

//头结点的数据无效(ps:这里用0表示)
*pHead = CreateNewNode(no_data);
(*pHead)->pPrev = *pHead;
(*pHead)->pNext = *pHead;

return;
}

//打印链表内容
void DListPrint(pDListNode pHead)
{
pDListNode pCur = NULL;

assert(NULL != pHead);

//pHead = pHead->pNext;
printf(“\n链表内容为:“);

//printf(“%2c -> “ pHead->data);

for (pCur = pHead; pHead != pCur->pNext; pCur = pCur->pNext)
{
printf(“%2c -> “ (pCur->pNext)->data);
}

//printf(“%2c\n“ pHead->data);

return;
}

//头插
void DListPushFront(pDListNode pHead DataType data)
{
pDListNode pNewNode = NULL;
pDListNode pFir

评论

共有 条评论