| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:这个表还行吗
只看楼主 加入收藏
wangliangba
Rank: 1
等 级:新手上路
帖 子:8
专家分:1
注 册:2011-4-17
结帖率:100%
收藏
 问题点数:0 回复次数:1 
这个表还行吗
#include
#include
#define MAXLISTSIZE 1024//定义顺序表的容量

typedef struct            //定义顺序表的节点类型
{
    int data[MAXLISTSIZE];//顺序表
    int last;                //顺序表的元素个数
}linearlist;

void ListList(linearlist *list) //打印线性顺序表
{
    int i;
    printf("当前线性表的状态:\n");
    if (list->last==0)        //线性表为空
        printf("当前线性表为空");
    else
        for (i = 0;i < (list->last);i++)//循环遍历顺序表
            printf("%4d", list->data[i]);
        printf("\n");

}

void Output(linearlist *list)
{
    system("cls");        //清屏
    printf("顺序表\n");    //输入功能菜单
    printf("a:追加一个节点 b:插入一个节点\n");
    printf("c:删除一个节点 e:退出\n");
    ListList(list);
}

linearlist *CreateList()    //创建线性顺序表
{
    linearlist *list = (linearlist*)malloc(sizeof(linearlist));//分配空间
    list->last = 0;                //初始化头结点值
    return list;                //返回初始化头结点指针
}

void AppendNode(linearlist* list, int n)//追加节点
{
    if (list->last < MAXLISTSIZE);
    {
        list->data[list->last] = n;//初始化节点值
        list->last += 1;        //顺序表长度加1
    }
}

void lnsertNode(linearlist* list, int n, int p)//插入节点
{
    int j;
    if (p<0 || p>list->last)
        printf("所插入的位置超出顺序表的范围\n");
    else
    {
        for (j = list->last;j>=p;j--)//逆向遍历顺序表
            list->data[j+1] = list->data[j];//元素后移
        list->data[p] = n;//指向节点赋值
        list->last++;        //顺序表长度加1
    }
}

void DeleteNode(linearlist* list,int p)//删除节点
{
    int j;
    if ((p<0) || (p>list->last))//所要删除的位置超出顺序表的范围
        printf("所要删除的位置超出顺序表的范围\n");
    else
    {
        for (j = p;jlast;j++)    //遍历顺序表
            list->data[j] = list->data[j+1];//元素前移
        list->last--;        //顺序表长度加1
    }
}


int main()
{
    int k;  //元素值
    int p;  //下标
    char ch;
    linearlist *list;
    list = CreateList();//创建顺序表
   
    while(1)
    {
        Output(list);
        printf("请选择:");
        ch = getchar();
        fflush(stdin);//清除缓存
        if (ch == 'a')                    //追加
        {
            printf("请输入要追加的数据:");
            scanf("%d", &k);
            AppendNode(list,k);
        }
        else if(ch == 'b')                //插入
        {
            printf("请输入要插入数据的位置:");
            scanf("%d", &p);
            printf("请输入要插入的数据:");
            scanf("%d", &k);
            lnsertNode(list,k,p);

        }
        else if(ch == 'c')                //删除
        {
            printf("请输入要删除的位置:");
            scanf("%d", &p);
            DeleteNode(list,p);
        }
        else if(ch == 'e')                //退出
            exit(0);
        Output(list);
        fflush(stdin);
   
    }
    return 0;
}
我是新人
搜索更多相关主题的帖子: 线性表 include 元素 
2011-12-01 16:58
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
能起作用就行啊,要追求效率看算法导论
2011-12-01 17:05
快速回复:这个表还行吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011776 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved