数据结构——链表(2)链表元素顺序输出

要想输出链表,首先要有一个链表。那就要初始化,然后添加元素,再依次遍历即可。

#include <stdlib.h>
#include<iostream>


typedef int ElemType;
struct Node
{
    ElemType data;
    struct Node *next;
};

typedef struct Node Node;
typedef struct Node* Linklist;


#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MaxSize 30  //存储空间初始分配量
typedef int Status;


//对链表进行头插法
Status ListInsert1(Linklist *L,int i, ElemType e)
{
    Linklist p,s;
    p=(*L);
    int j=1;
    while(p && j<i)
    {
        p=p->next;
        j++;
    }
    if (!p || j>i)
        return ERROR;

    s=(Linklist)malloc(sizeof(Node));
    s->data=e;
    s->next =p->next;
    p->next =s;
    return OK;



}


/*  链表初始化 */
Status InitList1(Linklist *L)
{

    *L =(Linklist)malloc(sizeof(Node));
    if ((*L)==NULL)
    {
        return ERROR;
    }
    (*L)->next=NULL;
    return OK;

}

/*  从头到尾输出链表元素  */
Status ListTraverse1(Linklist L)
{
    Linklist p;
    p=L->next;
    while(p)
    {
        printf("%d",p->data);
        p=p->next;
    }
    return OK;
}

int main()
{
    Linklist L;
    InitList1(&L);          //首先,要初始化一个链表

    int len1=ListLength1(L);
    printf("%d\n",len1);

    for (int i=1;i<=5;i++)
    {
        ListInsert1(&L,1,i);
    }
    int len2=ListLength1(L);
    printf("%d\n",len2);

    Linklist p =L;
    for(int i=1;i<=len2;i++)
    {
        printf("%d\n",p->next->data);
        p=p->next;
    }

    //int num1=findInLinkList1(L,2);
    //printf("num1=%d\n",num1);

    //int num2=findInLinkList3(L,2);
    //printf("num2=%d\n",num2);

    //int num3=findInLinkList3(L,2);
    //printf("num3=%d\n",num3);


    ListTraverse1(L);
    getchar();

}

猜你喜欢

转载自blog.csdn.net/zhangying_496/article/details/81228794
今日推荐