双向链表的建立和反序

来源:互联网 发布:tplink网络设置 编辑:程序博客网 时间:2024/04/30 21:09

链表以前一直没有自己手写过,发现程序这个东西,一定的自己动手练习,才会掌握的比较牢固。所以今天就自己动手写了双向链表的建立和反序。记录一下

#include <stdio.h>
#include <malloc.h>
typedef struct _node
{
int data;
struct _node *pre;
struct _node *next;
}Node,*pNode;
pNode head = NULL;
void creatHead()
{
  int temp;
  pNode pnode;
  if(head == NULL)
  {
  pnode = (Node *)malloc(sizeof(Node));
  pnode->data = 100;
  pnode->pre = NULL;
  pnode->next = NULL;
  head = pnode;
  }
  for(temp = 0;temp < 5;temp++)
  {
  pNode tempnode = (Node *)malloc(sizeof(Node));
  tempnode->data = temp;
  tempnode->pre = pnode;
  tempnode->next = NULL;
  pnode->next = tempnode;
  pnode = tempnode;
  }
}
void fanzhuan(pNode headnode)
{
  pNode prenode = NULL;
  pNode pnext = NULL;
  pNode pnode = headnode;
  while(pnode)
  {
  pnext = pnode->next;
  if(pnext == NULL)
  {
  head = pnode;
  pnode->pre = NULL;
  }
  pnode->next = prenode;
  pnode->pre = pnext;
  prenode = pnode;
  pnode = pnext;
  }
}
void printnode(pNode headnode)
{
  pNode pnode;
  pnode = headnode;
  while(pnode)
  { 
  printf("node data=%d\n",pnode->data);
  pnode = pnode->next;
  }
}
void main()
{
creatHead();
printnode(head);
fanzhuan(head);
printnode(head);
}

原创粉丝点击