首页 > 其他分享 >2008秋-计算机软件基础-单链表练习(1)

2008秋-计算机软件基础-单链表练习(1)

时间:2023-11-08 12:07:13浏览次数:37  
标签:head 单链 nodetype struct temp next 链表 计算机软件 2008

/*--------------------------------------------------------

 设有一个单链表,头结点为head,为递增有序,

 写一个完整程序,将其改为递减有序。

----------------------------------------------------------*/

#include<stdio.h>

#include<stdlib.h>
//定义结点
struct nodetype

{

    int data;//数据域(可以是int,char,float,数组,结构体等类型)
    struct nodetype * next;

    //next指针域,指向下一个结点。
};

struct nodetype * InitialLinkList()

{

    //初始化链表,返回头指针
    struct nodetype * head;

    head=(struct nodetype *)malloc(sizeof(struct nodetype));//
    head->next=NULL;

    return head;

}

void CreateLinkListInRear(struct nodetype * head, int numbers[], 

                          int LengthOfNumbers)

{

    //尾接法创建单链表

    //从数组numbers[]中取出元素建立单链表

    //LengthOfNumbers为元素个数
    int i;

    struct nodetype * temp,* rear;

    rear=head;

    for(i=0;i<LengthOfNumbers;i++)

    {

        temp=(struct nodetype *)malloc(sizeof(struct nodetype));

        temp->data=numbers[i];

        temp->next=NULL;

        rear->next=temp;

        rear=temp;

    }

}

struct nodetype * ReverseLinkList(struct nodetype * head)

{

    //参照头插法建立单链表的思路,注意:为简单起见,没有释放结点空间

    //注意:如果想到排序算法,就把简单问题复杂化了。
    struct nodetype * newHead;

    struct nodetype * temp;

    struct nodetype *p;

    newHead=InitialLinkList();

    p=head->next;

    while(p!=NULL)

    {

        temp=(struct nodetype *)malloc(sizeof(struct nodetype));

        temp->data=p->data;

        temp->next=newHead->next;

        newHead->next=temp;

        p=p->next;

    }

    return newHead;

}

void PrintIntegerLinkList(struct nodetype * head)

{//显示链表结点数据
    struct nodetype *temp;

    temp=head->next;

    while(temp!=NULL)

    {

        printf("%d ",temp->data);

        temp=temp->next;

    }

    printf("\n");

}

void main()

{

    struct nodetype *head;

    int y[8]={1,2,3,4,5,6,7,8};

    head=InitialLinkList();//初始化
    CreateLinkListInRear(head,y,8);//以数组y中元素创建链表
    printf("显示原始链表中的元素,升序:\n");

    PrintIntegerLinkList(head);

    ReverseLinkList(head);

    printf("显示反转之后链表中的元素,降序:\n");

    PrintIntegerLinkList(ReverseLinkList(head));//显示删除6后链表
    getchar();

}

运行结果如下:

显示原始链表中的元素,升序:

1 2 3 4 5 6 7 8

显示反转之后链表中的元素,降序:

8 7 6 5 4 3 2 1



标签:head,单链,nodetype,struct,temp,next,链表,计算机软件,2008
From: https://blog.51cto.com/emanlee/8247613

相关文章

  • 2008秋-计算机软件基础-单链表完整示例
    /*---------------------------------------------------------Title:CompletedSimpleLinkedListAuthor:EmanLeeDate:Oct22,2008Fuction:OperationonLinkedStoredLinearList.Thisisacompletedsimplesample.Itisrelatedto......
  • 2008秋-计算机软件基础-多关键字排序
    /*多关键字排序:先按总分由高到低排序,若总分相同则按数学成绩由高到低排序,若总分和数学成绩都相同,则按英语成绩由高到低排序。*/#include<stdio.h>structstudent{intxuehao;charxingming[10];intshuxue;intyingyu;intyuwen;intzongf......
  • 2008秋季-计算机软件基础-有序表合并 教材 P79, ex3
    /*Author:EmanLee*//*计算机软件基础教材P79,ex3*/#include<stdio.h>#include<stdlib.h>intinsert(inta[],intarrayLength,int*listLength,intx){inti,j;if(*listLength+1==arrayLength)return0;/*fail*/for(i=0;i<*list......
  • 2008秋季-计算机软件基础- 线性表顺序存储 - 菜单
    /*2008-10-27*//*tod:删除,修改,参考:教材P63-67*/#include<stdio.h>#defineN1typedefstructstudent{charxuehao[10];charxingming[10];intchengji;}S;voidxianshicaidan(){printf("\n1-Initialization.\n");......
  • 2008秋季-计算机软件基础-0901课堂用例
    #include<stdio.h>voidupdate(intxiabiao,intb[],intxinshu);voidcharu(intweizhi,intb[],intcharushu,intshuzuchang);voidmain(){/*顺序存储的线性表-顺序表*/inta[5]={1,2,4,5};inti;intweizhi=2;/*for(i=......
  • 2008秋季-计算机软件基础-0903课堂用例(1)
    #include<stdio.h>voidupdate(intxiabiao,intb[],intxinshu);voidcharu(intweizhi,intb[],intcharushu,intshuzuchang);voidshanchu(intweizhi,intb[],int*changdu);voidshuchu(intaa[],intbiaochang);voidchazhao(int......
  • C语言程序设计 回答同学提出的几个疑问 2008
    1,例4.11中的K=1时什麽意思?K用来表示是否是空格字符(注:不是空字符,而是空格字符)0表示空格字符1表示非空格字符  2,例3.17看不懂呀?这一题不难。如果看不懂需要加把劲了。=12时就是按第三个式子算得呀。是有逻辑错误的。1<=x<10就有明显的错误,因为这是数学中的写法,不是C语言中的写法。......
  • 2008秋-计算机软件基础-实验三 参考源程序
    实验三参考源程序//软件基础教材79页习题6答案//EmanLee#include<stdio.h>#include<stdlib.h>#definem5//队列容量//定义队列的结构structqueue{intseq[m];//队列元素intquelen;//队列中元素个数intrear;//队列尾指针};//初始化队列......
  • 2008秋-计算机软件基础- 实验二 参考源程序
    实验二参考源程序/*Author:EmanLee,计算机软件基础教材P79,ex4设有一头为head的带头结点的单链表,其数据域为整形数据且递增有序。试写一算法,将元素插入链表适当的位置,以保持链表的有序性。*/#include<stdio.h>#include<stdlib.h>typedefintDataType;struc......
  • 2008秋-计算机软件基础-冒泡排序
    /*Title:冒泡排序Author:emanlee算法功能:冒泡排序算法实现将一个长度为n的线性表r上的所有元素按关键字升序排列。*/#include<stdio.h>voidbubblesort(intr[],intn){/*elementsarestoredinr[1]tor[n]*/inti,j,flag;inttemp;flag=1;i......