| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2409 人关注过本帖
标题:顺序链表插入错误
取消只看楼主 加入收藏
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
结帖率:82.35%
收藏
 问题点数:0 回复次数:1 
顺序链表插入错误
程序代码:
#include<stdio.h>
#include<malloc.h>
#define TURE 1
#define ERROR 0
#define MAXSIZE 100
typedef struct {
    int elem[MAXSIZE];
    int last;
}SqList;
void InitList(SqList *L,int e)
{
    L->last=e-1;
}//组建
int InsertList(SqList *L,int i,int e)
{
    int k;
    if(i<1||i>L->last+2)
    {
        printf("插入不符合\n");
        return ERROR;
    }
    if(L->last>=MAXSIZE-1)
    {
        printf("线性表已满\n");
        return ERROR;
    }
    for(k=L->last;k>=i-1;k--)
    {
        L->elem[k+1]=L->elem[k];
    }
    e=L->elem[i-1];
    L->last++;
    return TURE;
}//插入
int DeleteList(SqList *L,int i,int *e)
{
    int k;
    if(i<1||i>L->last+1)
    {
        printf("不合法\n");
        return ERROR;
    }
    *e=L->elem[i-1];
    for(k=i;k<=L->last;k++)
    {
        L->elem[k-1]=L->elem[k];
    }
    L->last--;
    return TURE;
}//删除
int SearchList(SqList L,int e)
{
    int i=0;
    while(i<=L.last&&L.elem[i]!=e)
        i++;
    if(i<=L.last)
    {
        return i+1;
    }
    else
        return ERROR;
}
//查找
void menu()
{
    printf("第一步首先建立一个线性表\n");
    printf("1  建立\n");
    printf("2  插入\n");
    printf("3  删除\n");
    printf("4  查找\n");
    printf("5  遍历输出\n");
    printf("6  退出\n");

}
int main()
{
    int i,e;
    int num,location,length,number;
    int *data;
    SqList *L;
    data=(int *)malloc(sizeof(int));
    menu();
    while(1)
        {
            printf("请输入你的序号\n");
            scanf("%d",&num);
            switch(num)
            {
            case 1:
                L=(SqList *)malloc(sizeof(SqList));
                printf("请输入线性表的长度\n");
                scanf("%d",&length);
                InitList(L,length);
                printf("请依次输入线性表的长度\n");
                for(i=0;i<length;i++)
                {
                    scanf("%d",&number);
                    L->elem[i]=number;
                }
                printf("插入成功\n");
                break;
            case 2:
                printf("请输入你要插入的数值和位置\n");
                scanf("%d %d",&e,&location);
                if(InsertList(L,location,e)==TURE)
                    printf("插入成功\n");
                else
                    printf("插入失败\n");
                break;
            case 3:
                printf("请输入你要删除的节点\n");
                scanf("%d",&i);
                if(DeleteList(L,i,data))
                    printf("删除成功,你所删除的节点的值是%d\n",*data);
                else
                    printf("删除失败\n");
                break;
            case 4:
                printf("请输入你要查找的数值\n");
                scanf("%d",&e);
                location=SearchList(*L,e);
                printf("你所查找的是%d个节点数\n",location);
                break;
            case 5:
                for(i=0;i<=L->last;i++)
                {
                    printf("%d ",L->elem[i]);
                }
                break;
            case 6:
                return 0;


            }
        }
        printf("\n");
        return 0;
}


谁能帮我看看,执行插入的时候怎么不符合常理呢?
2016-10-06 16:25
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
回复 3楼 书生牛犊
en   谢谢版主  我好多东西都是自学的  在学校老师也不管 所以很多编程习惯也不太清楚  请多多关照!
2016-10-08 16:17
快速回复:顺序链表插入错误
数据加载中...
 
   



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

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