鱼C论坛

 找回密码
 立即注册
查看: 1484|回复: 1

创建顺序表实现插入和删除,每次只删除一个元素,插入或删除后都要输出线性表元素一遍

[复制链接]
发表于 2020-11-5 23:06:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是我的代码,请求大佬们帮助
#include <stdio.h>
#include <stdlib.h>
#define M 30
typedef struct Linear_List
{
        int list[M];
        int len;
}Linear_List_Type;
void DeleteList(Linear_List_Type * p, int i);
void InsertList(Linear_List_Type * p, int m, int i, int b);
void printList(Linear_List_Type * p);
void main()
{
int i,b,flag,m=30;
Linear_List_Type *p;
p->len=0;
while(1)
{
while(1)
{int flag;
printf("请输入要插入的地方");
scanf("%d",&i);
printf("请输入要插入数据个数:");
scanf("%d",&b);
p->len=p->len+b;
InsertList (p,m,i,b);
printList(p);
printf("停止插入请输入0");
scanf("%d",&flag);
if(0==flag)
goto DEL;
}
DEL:
while(1)
{
int flag;
printf("请输入要删除的地方");
scanf("%d",&i);
DeleteList (p,i);
p->len-=1;
printf("停止删除请输入0");
scanf("%d",&flag);
DeleteList (p,i);
printList(p);
if(0==flag)
goto OUT;
}
OUT:
printf("退出程序输入0");
scanf("%d",&flag);
if(0==flag)
exit(0);
}
}
void InsertList (Linear_List_Type * p, int m, int i, int b)
{
        int k;
        if(p->len == m){
              printf(" overflow!\n ");
                return;
        }
        if(i > p->len){
                i = p->len + 1;
        }else if( i < 1)
                i = 1;
        for(k = p->len; k >= i; k--)
                p->list[k] = p->list[k -1];
         p->list[i-1] = b;
         p->len += 1;
}
void DeleteList (Linear_List_Type * p, int i)
{
        int k;
        if(p->len == 0){
                printf(" underflow !\n ");
                return;
        }
        if((i < 1) || (i > p->len)){
                printf(" This element is not in the list!\n ");
        }
        for(k = i; k < p->len; k++)
                p->list[k-1] = p->list[k];
        p->len= p->len -1;
        return;
}
void printList(Linear_List_Type * p)
{
        int j;
printf("表中的内容是:");
    for( j=0; j< p->len; j++)
    {
        printf("%d",p->list[j]);
    }
        printf("\n");
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-5 23:49:52 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#define M 30
typedef struct Linear_List
{
        int list[M];
        int len;
}Linear_List_Type;
void DeleteList(Linear_List_Type * p, int i);
void InsertList(Linear_List_Type * p, int m, int i, int b);
void printList(Linear_List_Type * p);
void main()
{
int i,b,n,flag,m=30;
Linear_List_Type p;
(&p)->len=0;
while(1)
{
while(1)
{
printf("请输入要插入的地方:\n");
scanf("%d",&i);
printf("请输入要插入数据个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入要插入的值:");
scanf("%d",&b);
InsertList (&p,m,i,b);
printList(&p);
}
printf("停止插入请输入0:\n");
scanf("%d",&flag);
if(0==flag)
goto DEL;
}
DEL:
while(1)
{
printf("请输入要删除的地方:");
scanf("%d",&i);
DeleteList (&p,i);
printList(&p);
printf("停止删除请输入0:\n");
scanf("%d",&flag);
if(0==flag)
goto OUT;
}
OUT:
printf("退出程序输入0:\n");
scanf("%d",&flag);
if(0==flag)
exit(0);
}
}
void InsertList (Linear_List_Type * p, int m, int i, int b)
{
        int k;
        if(p->len == m){
              printf(" overflow!\n ");
                return;
        }
        if(i > p->len){
                i = p->len + 1;
        }else if( i < 1)
                i = 1;
        for(k = p->len; k >= i; k--)
                p->list[k] = p->list[k -1];
         p->list[i-1] = b;
         p->len += 1;
}
void DeleteList (Linear_List_Type * p, int i)
{
        int k;
        if(p->len == 0){
                printf(" underflow !\n ");
                return;
        }
        if((i < 1) || (i > p->len)){
                printf(" This element is not in the list!\n ");
        }
        for(k = i; k < p->len; k++)
                p->list[k-1] = p->list[k];
        p->len= p->len -1;
        return;
}
void printList(Linear_List_Type * p)
{
        int j;
printf("表中的内容是:");
    for( j=0; j< p->len; j++)
    {
        printf("%d",p->list[j]);
    }
        printf("\n");
}
我自己解决了,让大家见笑了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 17:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表