您的位置:首页 > 其它

链表的游标实现?

2013-09-24 21:57 218 查看
#ifndef CURSOR_H_INCLUDED

#define CURSOR_H_INCLUDED

//游标的共享?

struct c

{

    char used;

    int data;

    int next;

};

typedef struct c cursor;

void init_cursor(cursor a[],int n)

{

    int i;

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

    {a[i].used=0;

     a[i].next=-1;}

}

void insert_cursor(cursor a[],int n,int p,int x)

{

    int i,j;

    for (i=p;a[i].next!=-1;i = a[i].next) ;

    for (j=n-1;j>0&&a[j].used==1;j--)     ;

//printf("i=%d  j=%d\n",i,j);

    if (j==0)

        printf("no more space\n");

    else

    {

        a[j].data = x;

        a[j].next=-1;

        a[j].used=1;

        a[i].next = j;

    }

}

void print_cursor(cursor a[],int p)

{

    int i;

    for (i=p;a[i].next!=-1;i=a[i].next)

        {

            printf("%d\t",a[a[i].next].data);

        }

    printf("\n");

}

int new_list(cursor a[],int n)

{

   int i;

   for(i=0;i<n&&a[i].used==1;i++);

   a[i].used=1;

   if(i==n)

   {printf("full\n");

   return  -1;

   }

   return i;

}

#endif // CURSOR_H_INCLUDED

#include <stdio.h>

#include <stdlib.h>

#include "cursor.h"

int main()

{

    int i,x;

    cursor a[10];

    init_cursor(a,10);

    int p=new_list(a,10);

    while (p>-1)

    {

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

        {

            scanf("%d",&x);

            insert_cursor(a,10,p,x);

            printf("链表%d:\n",p);

            print_cursor(a,p);

        }

        p=new_list(a,10);

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: