考研数据结构与算法----单链表的创建和读取(1)

    先来个简单的,晚上再把整表删除神马的加上,懒得注释了,贴出来就是给同样考研的同志们做个参考。

    话说现在大学折腾的越来越水,当年我们学数据结构的时候单链表就算是五个实验里面第二难的了,最难的是一个二叉树的,最后反正是都没做出来直接往上抄的。其实现在回头看过来倒是不难实现。除此之外单链表一个比较重要的地方就在于今后的许多算法比如树、图都是要在它的基础上实现的(单链表是图和树的子集)。

#include<stdio.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;
typedef struct Node *LinkList;
Status GetElem(LinkList L, int i, ElemType *e);
Status ListInsert(LinkList *L, int i, ElemType e);
Status InitList(LinkList *L, int n);
void ShowList(LinkList L);
int main(void)
{
    LinkList myList;
    InitList(&myList, 9);
    ElemType t;
    GetElem(myList, 1, &t);
    printf("%d",t);
    printf("\n");
    ShowList(myList);
    return 0;
}

Status GetElem(LinkList L, int i, ElemType *e)
{
    int j = 1;
    LinkList p;
    p = L->next;
    while(p && j<i)
    {
        p = p->next;
        j++;
    }
    if(!p || j>i)
    {
        return ERROR;
    }
    *e = p->data;
    return OK;
}
Status InitList(LinkList *L, int n)
{
    LinkList p,r;
    int i;
    *L =(LinkList)malloc(sizeof(Node));
    r = *L;
    for(i=0; i<=n; i++)
    {
        p = (Node*)malloc(sizeof(Node));
        p->data = i+1;
        r->next = p;
        r = p;
    }
    r->next = NULL;
    return OK;
}
void ShowList(LinkList L)
{
    LinkList p;
    p = L->next;
    while(p->next)
    {
        printf("%d\t", p->data);
        p = p->next;
    }
}

最后再发个运行结果图:



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值