C语言 单向链表倒序

来源:互联网 发布:最新淘宝消息铃声 编辑:程序博客网 时间:2024/05/18 01:31

#include <stdio.h>
#include <malloc.h>

typedef struct _ListElement ListElement;

struct _ListElement{

 ListElement* next;
 int x; 

};

ListElement* reservet( ListElement* ele )
{

 ListElement* curEle = ele;
 ListElement* lastEle = ele;
 ListElement* tmpEle = NULL;

 while (curEle)
 {
  tmpEle = curEle->next;
  curEle->next = lastEle;
  lastEle = curEle;
  curEle = tmpEle;
 }

 ele->next = NULL;

 return lastEle;

}

int main()
{

 ListElement* tmpEle = NULL;
 ListElement* firstEle = NULL;
 int i;
 for ( i = 0; i < 10; ++i)
 {
  ListElement* newEle = (ListElement*)malloc(sizeof(ListElement));
  newEle->x = i;
  newEle->next = NULL;
  if (tmpEle)
  {
   tmpEle->next = newEle;
  }
  else
  {
   firstEle = newEle;
  }
  tmpEle = newEle;
 }

 tmpEle = reservet( firstEle );
 firstEle = tmpEle;

 while(tmpEle)
 {
  printf( "%d\n", tmpEle->x);
  tmpEle = tmpEle->next;
 }

 tmpEle = firstEle;
 while(tmpEle)
 {
  firstEle = tmpEle;
  tmpEle = tmpEle->next;
  free(firstEle);
 }

 getchar();

 return 0;
}

原创粉丝点击