資源簡介
創(chuàng)建空的雙向鏈表;
逐字符讀取鍵盤輸入的合法字符串,并依次插入到雙向鏈表中。具體的,對(duì)于當(dāng)前讀取的字符,
構(gòu)造其對(duì)應(yīng)的結(jié)點(diǎn)。
利用頭插法(或尾插法)將該結(jié)點(diǎn)按照鍵盤輸入的順序插入到雙向鏈表中。
3、判斷雙向鏈表中各節(jié)點(diǎn)是否首尾對(duì)稱,并打印出是否首尾對(duì)稱的提示信息。(【提示】:可以利用雙向鏈表的頭指針和尾指針,其中頭指針往鏈表尾部移動(dòng),尾指針向鏈表頭部方向移動(dòng)。當(dāng)頭尾指針最后能相遇時(shí),則可認(rèn)為輸入字符串是首尾對(duì)稱的。)
代碼片段和文件信息
//?shiyan2.cpp?:?此文件包含?“main“?函數(shù)。程序執(zhí)行將在此處開始并結(jié)束。
//
#include?“pch.h“
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
typedef?char?DataType;
typedef?struct?DListNode
{
DataType?data;?//?數(shù)據(jù)
struct?DListNode?*?pPrev;?//?指向上一個(gè)結(jié)點(diǎn)
struct?DListNode?*?pNext;?//?指向下一個(gè)結(jié)點(diǎn)
}DListNode?*pDListNode;
//創(chuàng)建新結(jié)點(diǎn)
static?pDListNode?CreateNewNode(DataType?data)
{
pDListNode?pNewNode?=?(pDListNode)malloc(sizeof(DListNode));
if?(NULL?==?pNewNode)
{
perror(“內(nèi)存分配失敗!\n“);
exit(-1);
}
else
{
pNewNode->data?=?data;
pNewNode->pPrev?=?NULL;
pNewNode->pNext?=?NULL;
}
return?pNewNode;
}
//帶頭結(jié)點(diǎn)的雙向鏈表的初始化
void?DListInit(pDListNode?*?pHead)
{
int?no_data?=?0;
assert(NULL?!=?pHead);
//頭結(jié)點(diǎn)的數(shù)據(jù)無效(ps:這里用0表示)
*pHead?=?CreateNewNode(no_data);
(*pHead)->pPrev?=?*pHead;
(*pHead)->pNext?=?*pHead;
return;
}
//打印鏈表內(nèi)容
void?DListPrint(pDListNode?pHead)
{
pDListNode?pCur?=?NULL;
assert(NULL?!=?pHead);
//pHead?=?pHead->pNext;
printf(“\n鏈表內(nèi)容為:“);
//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
評(píng)論
共有 條評(píng)論