思索了许久,我想出了不带头结点的做法,依旧是利用头插法,代码如下:
struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here' struct ListNode* p=(struct ListNode*)malloc(sizeof(struct ListNode));//p结点头***链表 struct ListNode* q=(struct ListNode*)malloc(sizeof(struct ListNode));//q记录p的下一个结点 p=pHead; pHead=NULL; while(p) { q=p->next; p->next=pHead; pHead=p; p=q; } return pHead; }
该题是将一个不带头结点的链表逆置,由于我不会不带头结点的解法,故构造了一个头结点指向链表表头,代码如下:
struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here' struct ListNode* L=(struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* p=(struct ListNode*)malloc(sizeof(struct ListNode));//p结点头***链表 struct ListNode* q=(struct ListNode*)malloc(sizeof(struct ListNode));//q记录p的下一个结点 L->next=pHead; p=L->next; L->next=NULL; while(p) { q=p->next; p->next=L->next; L->next=p; p=q; } pHead=L->next; return pHead; }