資料結構---列隊(單鏈表實現)
阿新 • • 發佈:2018-12-31
一、理論知識
待續
二、程式碼實現
1.節點結構體、棧頂、尾指標結構體定義
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node* pNext;
}node,*pNode;
typedef struct Queue//儲存棧的頭。尾指標
{
pNode front;
pNode rear;
}Queue,*pQueue;
2.初始化棧
void initQueue(pQueue qu) { qu->front = NULL; qu->rear = NULL; }
3.判斷棧是否為空
bool isEmpty(pQueue qu)
{
return (!qu->front) && (!qu->rear);
}
4.得到棧頂元素
ElemType getFrontData(pQueue qu)
{
if (!isEmpty(qu))
{
return qu->front->data;
}
return -1;
}
5.壓棧
void pushQueue(pQueue qu,ElemType data) { pNode newNode = new node; newNode->data = data; newNode->pNext = NULL; if (!qu->front) { qu->front = newNode; qu->rear = newNode; } else { qu->rear->pNext = newNode; qu->rear = newNode; } }
6.出棧
void popQueue(pQueue qu) { if (isEmpty(qu)) return; pNode tempNode = qu->front->pNext; pNode delNode = qu->front; if (!tempNode) { qu->front = qu->rear = tempNode; delete delNode; delNode = NULL; } else { qu->front = tempNode; delete delNode; delNode = NULL; } }
7.銷燬棧
void destoryQueue(pQueue qu)
{
if (!isEmpty(qu))
{
pNode tempNode;
while (qu->front)
{
tempNode = qu->front;
qu->front = tempNode->pNext;
delete tempNode;
}
}
}
8.列印棧內元素
void showQueue(pQueue qu)
{
if (isEmpty(qu))
printf("棧為空,無法列印!\n");
pNode tempNode = qu->front;
while (tempNode)
{
printf("%d->", tempNode->data);
tempNode = tempNode->pNext;
}
}