| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1507 人关注过本帖
标题:(求解答)关于数据结构--线性表问题
只看楼主 加入收藏
食来运转
Rank: 1
来 自:广东-深圳
等 级:新手上路
帖 子:6
专家分:3
注 册:2016-7-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
(求解答)关于数据结构--线性表问题
程序代码:
#include<stdio.h>
#include<malloc.h>

typedef int TSeqlistNode;

typedef struct _tag_SeqList
{
    int capcity;
    int length;
    TSeqlistNode* node;
}TSeqlist;

/*1创建线性链表*/
TSeqlist* Seqlist_create(int capacity)
{
    TSeqlist* ret=NULL;
    if(capacity >= 0)
        {
            ret=(TSeqlist*)malloc(sizeof(TSeqlist)+sizeof(TSeqlistNode)*capacity);
        }
        if(ret!=NULL)
        {
            ret->capcity=capacity;
            ret->length=0;
            ret->node=(TSeqlistNode*)(ret+1);
        }
    return ret;
}


/*2销毁*/
void Seqlist_Destroy(TSeqlist* list)

{
    free(list);
}

/*3清空*/
void Seqlist_Clear(TSeqlist* list)
{
    if(list!=NULL)
    {
        list->length=0;
    }
}

/*4长度*/
int Seqlist_Length(TSeqlist* list)
{
    int ret=-1;
    if(list!=NULL)
    {
        ret=list->length;
    }
    return ret;
}


/*5容量*/
int Seqlist_Caplist(TSeqlist* list)
{
    int ret=-1;
    if(list!=NULL)
    {
        ret=list->capcity;
    }
    return ret;
}


/*6插入*/
int Seqlist_Insert(TSeqlist *list,TSeqlistNode* node,int pos)
{
    int ret=(list!=NULL);
    int i;

 



    ret=ret&&(list->length+1<=list->capcity);
    ret=ret&&(0<=pos);

 



    if(ret)
    {
        if(pos>=list->length)
            {
                pos=list->length;
            } 



     



        for(i=list->length;i<pos;i--)
            {
                list->node[i]=list->node[i-1];
            }
            list->node[i]=(TSeqlistNode)node;//这样就把地址保存进来了

            list->length--;
    } 



    return ret;
}




 /*7得到*/

 TSeqlistNode* Seqlist_Get(TSeqlist* list,int pos)

 {
     TSeqlistNode* ret=NULL;
     int i;
     if(list!=NULL)
     {
         ret=(TSeqlistNode*)(list->node[pos]);
     



     }
     return ret;

 }




 /*8删除*/

 TSeqlistNode* Seqlist_Delete(TSeqlist* list,int pos)

 {
     TSeqlistNode* ret=Seqlist_Get(list,pos);
     int i;
  



     if(ret!=NULL)
     {
         for(i=pos+1;i<list->length;i++)
         {
             list->node[i-1]=list->node[i];
         }
         list->length--;
     }
     return ret;
}


main()
{
    TSeqlist* List=Seqlist_create(5);
    int i=0;
    int j=1; 



    int k=2; 



    int x=3; 



    int y=4;
    int z=5;
    int index;

 



    Seqlist_Insert(List,&i,0);
    Seqlist_Insert(List,&j,0);
    Seqlist_Insert(List,&k,0);
    Seqlist_Insert(List,&x,0);
    Seqlist_Insert(List,&y,0);
    Seqlist_Insert(List,&z,0);

 



     for(index=0; index<Seqlist_Length(List); index++)
    {
        int* p = Seqlist_Get(List, index);
     



        printf("%d\n", *p);
    }


 



}




这是一段线性表的学习检验代码,本应该是出现如下的状况:

4
3
2
1
0
请按任意键继续。。。


结果只是出现了:
请按任意键继续。。。


百思不得其解,虚心请教是哪里出错了呢?
        不胜言谢~
搜索更多相关主题的帖子: 线性表 
2016-07-26 21:50
zhangqiwhut
Rank: 2
等 级:论坛游民
帖 子:7
专家分:25
注 册:2015-3-20
收藏
得分:18 
回复 楼主 食来运转
第六个函数,也就是插入,那个函数,里面最后应该是list->length++;
2016-07-26 22:44
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:2 
List 的长度 length 不对~

Read The Fucking Source Code~
2016-07-26 22:48
zhangqiwhut
Rank: 2
等 级:论坛游民
帖 子:7
专家分:25
注 册:2015-3-20
收藏
得分:0 
回复 楼主 食来运转
还有就是刚刚说的那条语句,上面那个for循环,应该是for(i=list->length;i>pos;i--),是i>pos,而不是i<pos,这样输出就是4 3 2 1 0了
2016-07-26 23:18
食来运转
Rank: 1
来 自:广东-深圳
等 级:新手上路
帖 子:6
专家分:3
注 册:2016-7-26
收藏
得分:0 
回复 2楼 zhangqiwhut
谢谢,指点的很详细,问题解决了

酸甜苦辣皆自品,是非功过任人评。
2016-07-27 07:00
快速回复:(求解答)关于数据结构--线性表问题
数据加载中...
 
   



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

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