資源簡介
創建空的雙向鏈表;
逐字符讀取鍵盤輸入的合法字符串,并依次插入到雙向鏈表中。具體的,對于當前讀取的字符,
構造其對應的結點。
利用頭插法(或尾插法)將該結點按照鍵盤輸入的順序插入到雙向鏈表中。
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
評論
共有 條評論