#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct SPB
{
int seller_num;
int fit_num;
int building_num;
int count;
struct SPB* next;
}ListNode, * LinkList;
int main()
{
struct SPB* head = (struct SPB*)malloc(sizeof(struct SPB));
if (head == NULL)
{
printf("分配失败,程序结束");
exit(0);
}
head->next = NULL;
struct SPB* p = NULL;
int ch = 0;
while (ch != 5)
{
printf("\nMUNU\n");//菜单
printf("add data---------1\n");
printf("delete data------2\n");
printf("update data------3\n");
printf("print linklist---4\n");
printf("exit ------------5\n");
printf("***************\n\n");
printf("请输入你的选择:");
scanf("%d", &ch);
if (ch == 1)
{
struct SPB pb; //struct SPB pf, * pb;
int i;
if (head == NULL)
continue;
else {
p = head;
while (p->next) p = p->next;
}
for (i = 0; i < 2; i++)
{
pb = (struct SPB*)malloc(sizeof(struct SPB));
if (NULL == pb)
{
printf("malloc fail!\n");
break; //return head;
}
pb->next = NULL;
printf("\nseller's number: ");
scanf("%d", &pb->seller_num);
printf("fit's number: ");
scanf("%d", &pb->fit_num);
printf("builiding's number: ");
scanf("%d", &pb->building_num);
printf("count's number: ");
scanf("%d", &pb->count);
p->next = pb;
p = pb;
}
}
if (ch == 2)
{
int i, j = 0;
struct SPB q = NULL;
if (head == NULL)
continue;
else {
p = head;
}
do {
printf("请输入需删除的项:");
scanf("%d", &i);
} while (i <= 0);
while (p && j < i)
{
q = p;
p = p->next;
j++;
}
if (p == NULL)
printf("\n未找到删除的项.\n");
else {
q->next = p->next;
free(p);
printf("\n第%d项删除成功.\n", i);
}
}
if (ch == 3)
{
int i, j = 0;
if (head == NULL)
continue;
else {
p = head;
}
do {
printf("请输入需修改的项:");
scanf("%d", &i);
} while (i <= 0);
while (p && j < i)
{
p = p->next;
j++;
}
if (p == NULL)
printf("\n未找到修改的项.\n");
else {
int sel;
do{
printf("\n请输入你要修改的数据 1,销售商号码 2,配件号 3,工地号 4,数量 :");
scanf("%d", &sel);
} while (sel < 1 || sel>4);
switch (sel) {
case 1:printf("请输入新的销售商品号:");
scanf("%d", &p->seller_num);
break;
case 2:printf("请输入新的配件号:");
scanf("%d", &p->fit_num);
break;
case 3:printf("请输入新的工地号:");
scanf("%d", &p->building_num);
break;
case 4:printf("请输入新的数量:");
scanf("%d", &p->count);
break;
default:break;
}
printf("\n第%d项数据修改成功.\n", i);
}
}
if (ch == 4)
{
if (head->next == NULL)
continue;
else {
p = head->next;
}
printf("\n1.销售商号码\t2.配件号\t3.工地号\t4.数量\n");
while (p)
{
printf("%d\t\t%d\t\t%d\t\t%d\n", p->seller_num, p->fit_num, p->building_num, p->count);
p = p->next;
}
}
}
return 0;
}
我想实现数据的插入,删除和修改,求修改代码让他能成功运行
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qzjhjxj 2021-12-16 09:24关注
修改如下,供参考:
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct SPB { int seller_num; int fit_num; int building_num; int count; struct SPB* next; }ListNode, * LinkList; int main() { struct SPB* head = (struct SPB*)malloc(sizeof(struct SPB)); if (head == NULL) { printf("分配失败,程序结束"); exit(0); } head->next = NULL; struct SPB* p = NULL; int ch = 0; while (ch != 6) { printf("\n*******MUNU*******\n");//菜单 printf("add data---------1\n"); //增加 printf("delete data------2\n"); //删除 printf("update data------3\n"); //修改 printf("insert data------4\n"); //插入 printf("print linklist---5\n"); //输出 printf("exit ------------6\n"); //退出 printf("******************\n\n"); printf("请输入你的选择:"); scanf("%d", &ch); if (ch == 1) { struct SPB* pb; //struct SPB* pf, * pb; int i; if (head == NULL) continue; else { p = head; while (p->next) p = p->next; } for (i = 0; i < 2; i++) { pb = (struct SPB*)malloc(sizeof(struct SPB)); if (NULL == pb) { printf("malloc fail!\n"); break; //return head; } pb->next = NULL; printf("\nseller's number: "); scanf("%d", &pb->seller_num); printf("fit's number: "); scanf("%d", &pb->fit_num); printf("builiding's number: "); scanf("%d", &pb->building_num); printf("count's number: "); scanf("%d", &pb->count); p->next = pb; p = pb; } } if (ch == 2) { int i, j = 0; struct SPB* q = NULL; if (head == NULL) continue; else { p = head; } do { printf("请输入需删除的项:"); scanf("%d", &i); } while (i <= 0); while (p && j < i) { q = p; p = p->next; j++; } if (p == NULL) printf("\n未找到删除的项.\n"); else { q->next = p->next; free(p); printf("\n第%d项删除成功.\n", i); } } if (ch == 3) { int i, j = 0; if (head == NULL) continue; else { p = head; } do { printf("请输入需修改的项:"); scanf("%d", &i); } while (i <= 0); while (p && j < i) { p = p->next; j++; } if (p == NULL) printf("\n未找到修改的项.\n"); else { int sel; do{ printf("\n请输入你要修改的数据 1,销售商号码 2,配件号 3,工地号 4,数量 :"); scanf("%d", &sel); } while (sel < 1 || sel>4); switch (sel) { case 1:printf("请输入新的销售商品号:"); scanf("%d", &p->seller_num); break; case 2:printf("请输入新的配件号:"); scanf("%d", &p->fit_num); break; case 3:printf("请输入新的工地号:"); scanf("%d", &p->building_num); break; case 4:printf("请输入新的数量:"); scanf("%d", &p->count); break; default:break; } printf("\n第%d项数据修改成功.\n", i); } } if (ch == 4) { int i, j = 0; if (head == NULL) continue; else { p = head; } struct SPB* q = NULL, * ib = (struct SPB*)malloc(sizeof(struct SPB)); ib->next = NULL; do { printf("请输入插入的项序号(前插):"); scanf("%d", &i); } while (i <= 0); printf("\n请输入插入项的数据:\n"); printf("\nseller's number: "); scanf("%d", &ib->seller_num); printf("fit's number: "); scanf("%d", &ib->fit_num); printf("builiding's number: "); scanf("%d", &ib->building_num); printf("count's number: "); scanf("%d", &ib->count); while (p && j < i) { q = p; p = p->next; j++; } if (p == NULL) q->next = ib; else { ib->next = q->next; q->next = ib; } printf("\n第%d项插入成功.\n", i); } if (ch == 5) { if (head->next == NULL) continue; else { p = head->next; } printf("\n1.销售商号码\t2.配件号\t3.工地号\t4.数量\n"); while (p) { printf("%d\t\t%d\t\t%d\t\t%d\n", p->seller_num, p->fit_num, p->building_num, p->count); p = p->next; } } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算