Start testing.In initQueue, the address of resultPtr is 2293208 The value of resultPtr is 2521728 The address of headerPtr is 2293200 The value of headerPtr is 2521760局部变量的空间能重复利用
Start testing.In initQueue, the address of resultPtr is 2293208 In linkEnqueue, the address of tempNodePtr is 2293208
指针变量的值(指针的值),指的是指针本身的值 ; 指针地址,指的是指针的地址值 ,这个地址代表的内存,存储的是指针的值。
入队和出队图示完整代码
#include运行结果#include typedef struct LinkNode{ int data; LinkNode* next; }*LinkNodePtr; typedef struct LinkQueue{ LinkNodePtr front; LinkNodePtr rear; }*LinkQueuePtr; LinkQueuePtr iniQueue(){ LinkQueuePtr result = (LinkQueuePtr)malloc(sizeof(LinkQueue)); LinkNodePtr header = (LinkNodePtr)malloc(sizeof(LinkNodePtr)); header->next = NULL; result->front = header; result->rear = header; return result; } void printLinkQueue(LinkQueuePtr pQueuePtr){ LinkNodePtr tempPtr = pQueuePtr->front->next; while(tempPtr != NULL){ printf("%d",tempPtr->data); tempPtr = tempPtr->next; } printf("n"); } void enqueue(LinkQueuePtr pQueuePtr,int pElement){ LinkNodePtr tempNodePtr = (LinkNodePtr)malloc(sizeof(LinkNodePtr)); tempNodePtr->data = pElement; tempNodePtr->next = NULL; pQueuePtr->rear->next = tempNodePtr; pQueuePtr->rear = tempNodePtr; } int dequeue(LinkQueuePtr pQueuePtr){ int resultValue; LinkNodePtr tempNodePtr; if(pQueuePtr->front == pQueuePtr->rear){ printf("The queue is empty.n"); return -1; } tempNodePtr = pQueuePtr->front->next; resultValue = tempNodePtr->data; pQueuePtr->front->next = pQueuePtr->front->next->next; if(pQueuePtr->rear == tempNodePtr){ pQueuePtr->rear = pQueuePtr->front; } free(tempNodePtr); return resultValue; } void testLinkQueue(){ LinkQueuePtr tempQueuePtr; tempQueuePtr = iniQueue(); enqueue(tempQueuePtr,10); enqueue(tempQueuePtr,30); enqueue(tempQueuePtr,50); printLinkQueue(tempQueuePtr); printf("dequeue gets %dn",dequeue(tempQueuePtr)); printf("dequeue gets %dn",dequeue(tempQueuePtr)); printf("dequeue gets %dn",dequeue(tempQueuePtr)); printf("dequeue gets %dn",dequeue(tempQueuePtr)); enqueue(tempQueuePtr,8); printLinkQueue(tempQueuePtr); } int main(){ testLinkQueue(); return 0; }
10 30 50 dequeue gets 10 dequeue gets 30 dequeue gets 50 The queue is empty. dequeue gets -1 8



