链表相关操作二(两种遍历方式)

来源:互联网 发布:新津知美术馆闭馆时间 编辑:程序博客网 时间:2024/04/30 06:14

1、头结点不存放Value

void reverseLinkList(PNODE head){NODE *p,*q,*r;p = head->pNext;if(p==NULL || p->pNext==NULL){return;//说明没有元素或只有一个元素}q = p->pNext;while(q){r = q->pNext;p->pNext = r;//将q删除q->pNext = head->pNext;//将q插入到第一个结点head->pNext = q;q = r;}}

2、头结点存放Value

Node * reverse(Node * head) {      if(head == NULL)          return head;        Node *p = head->next;      if(p == NULL)          return head;        Node *q = p->next;      if(q == NULL) {          head->next = NULL;          p->next = head;          return p;      }        head->next = NULL;      while(q) {          p->next = head;          head = p;          p = q;          q = q->next;      }      p->next = head;      return p;  }