Mr.Lucy

导航

链表的创建

  链表可以用c语言描述,也可以用c++语言描述。考虑到初学者的困难。特意用c语言。

  下面展示一下链表创建:

    顺插法:

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

struct tagNode
{
  int data;
  tagNode* next;
};

typedef tagNode Node;
typedef tagNode* Link; 

//创建链表
Link create_List(Link head)
{
      int data;
      Link p,tmp;
      head = (Link)malloc(sizeof(Node));
      if(!head)
      {
         printf("内存分配失败!");
         return NULL;
      }
   
      head->data = 0;
      head->next = NULL;

      printf("请输入数据\n"); 
      scanf("%d",&data);

      p = head;
      while(data != 0)
      {
         tmp = (Link)malloc(sizeof(Node));
         tmp->data = data;
         tmp->next = p;
         p = tmp;
         printf("请输入数据\n"); 
         scanf("%d",&data);
      }
      return head;
}

 

          下面讲讲单链表的逆转:
                

Link  NiZhuan(Link head)
{

    Link  pBack,pPointer,pNext;
    pBack = head;  
    pPointer = pBack->next;
    pBack->next = NULL;

    pNext = pPointer->next;
    pPointer->next = pBack;
    pBack = pPointer;
    pPointer = pNext;

    while(pPointer->pNext != NULL)
    {
        pNext = pPointer->next;
        pPointer->next = pBack;
        pBack = pPointer;
        pPointer = pNext;
    }
    pPointer->next = pBack;
    head = pPointer;
    return head;
}

 

 

 

 

 

 

 

posted on 2012-12-06 16:32  Mr.Lucy  阅读(154)  评论(0编辑  收藏  举报