Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7445
  • 博文数量: 4
  • 博客积分: 1445
  • 博客等级: 上尉
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-15 19:55
文章分类

全部博文(4)

文章存档

2011年(1)

2010年(1)

2009年(2)

我的朋友
最近访客

分类: C/C++

2010-12-03 17:14:45

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


typedef int Item;

typedef struct LNode
{
    Item data;
    struct LNode *next;

}LNode, *LinkList;


void InitList(LinkList *L)
{
    *L = (LinkList)malloc(sizeof(LNode));
    (*L)->next = NULL;
}


void DestroyList(LinkList *L)
{
    LinkList p;
    while(*L != NULL)
    {
        p = *L;
        *L = (*L)->next;
        free(p);
    }
}

void ClearList(LinkList *L)
{
    LinkList p;
    p = (*L)->next;
    while(p != NULL)
    {
        (*L)->next = p->next;
        free(p);
        p = (*L)->next;
    }
}

int EmptyList(LinkList L)
{
    if(L->next == NULL) {
        return 1;
    }
    return 0;

}


int LengthList(LinkList L)
{
    int i=0;
    LinkList p;
    p = L->next;
    while(p != NULL)
    {
        p = p->next;
        i++;
    }
    return i;
}


void GetItem(LinkList L, int i, Item *e)
{
    LinkList p;
    int n=1;
    p = L->next;
    while(p != NULL && n < i)
    {
        n++;
        p = p->next;
    }
    *e = p->data;

}



void InsertItem(LinkList *L, int i, Item e)
{
    LinkList new, current, q;
    current = (*L)->next;
    q = *L;

    int n = 1;
    while(current != NULL && n < i)
    {
        q = current;
        n++;
        current = current->next;
    }
    new = (LinkList)malloc(sizeof(LNode));
    new->data = e;
    q->next = new;
    new->next = current;
}


void PrintList(LinkList L)
{
    int i=1;
    LinkList p;
    p = L->next;
    while(p != NULL)
    {
        printf("%d : %d\n",i, p->data);
        p = p->next;
        i++;
    }
}


int main(int argc, char **argv)
{
    LinkList L;
    InitList(&L);
    int i;
    for(i = 1; i < 10; i++)
    {
        InsertItem(&L, i, i);
    }
    PrintList(L);
    DestroyList(&L);

    return 0;
}


阅读(298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~