文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>网新恒天笔试题,有一个整型的单向链表A,请编程将其倒序。

网新恒天笔试题,有一个整型的单向链表A,请编程将其倒序。

时间:2011-03-13  来源:草珊瑚

代码如下:

#include <stdio.h>
#include <stdlib.h>

struct llist
{
    int num;
    struct llist *next;    
};
typedef struct llist node;
typedef node *llink;

void printllist(llink ptr)//链表输出
{
    while(ptr != NULL)
    {
        printf("[%d]",ptr->num);
        ptr = ptr->next;    
    }
    printf("\n");    


//链表的创建
llink createllist(int *array,int len)
{
    llink head;//链表的开始指针 
    llink ptr,ptr1;
    int i;
    
    //创建第一个结点
    head = (llink)malloc(sizeof(node));//分配内存 
    if(!head)//检查指针 
    {return NULL;}
    head->num = array[0]; //创建结点内容 
    head->next =NULL;//设置指针初值 
    ptr = head;    //将ptr指向链表开始 
    for(i=1;i<len;i++)    //创建其他结点循环 
    {
        ptr1 = (llink)malloc(sizeof(node));
        if(!ptr1)
        {
            return NULL;
        }    
        ptr1->num = array[i];  //创建结点内容 
        ptr1->next =NULL;
        ptr->next = ptr1;
        ptr = ptr->next;
    }    
    return head;


//链表的反转
llink invertllist(llink head)
{
    llink mid,last;
    mid = NULL; //mid是head的前结点 
    while(head != NULL)
    {
        last = mid;    //last是mid的前结点 
        mid =head;
        head = head->next; //下一个结点 
        mid->next = last;    //mid指向前结点last 
    }
    return mid;    


int main(int argc, char *argv[])
{
  int llist[6] = {1,2,3,4,5,6};
  llink head;
  
  head = createllist(llist,6);
  if(!head)
  {
    printf("内存分配失败!\n");
    exit(1);    
  }
  printf("原来的链表:");
  printllist(head);
  head = invertllist(head);
  printf("反转后链表:");
  printllist(head);
    
    
  
  system("PAUSE");    
  return 0;
}

 

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载