刚刚学编程 修改问题,用c语言基础的就行

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct SPB
{
int seller_num;
int fit_num;
int building_num;
int count;
int update;
struct SPB *next;
struct SPB *data;
}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;
p = head;
for (int i = 0; i < 4; i++)
{
struct SPB *s = (struct SPB *)malloc(sizeof (struct SPB));
p->next = s;
s->next = NULL;
p = s;
}//菜单
printf("MUNU
\n");
printf("add data--------1\n");
printf("delete data------2\n");
printf("update data------3\n");
printf("exit -----------4a\n");
printf("******************\n\n");
int ch;
printf("请输入你的选择");
scanf("%d", &ch);
while (ch != 4)
{ if (ch == 1)
{ struct SPB *pf, pb;
int i,
head = NULL;
for (i = 0; i < 2; i++)
{
pb = (struct SPB *) malloc(sizeof (struct SPB));
if (NULL == pb)
{ printf("malloc fail!\n");
return head;
}
}
printf("seller's number: ");
printf("fit's number: ");
printf("builiding's number: ");
printf("count's number: ");
scanf("%d,%d,%d,%d", pb->seller_num, pb->fit_num, pb->building_num, pb->count);
}
if (ch == 2) {
int i;
ListNode
L;
int j = 1;
struct SPB *q, *p;
p=L; //没有初始化啊,后面怎么能用呢
printf("请输入需删除的项");
scanf("%d", i);
while (p->next && j < i)
{
p = p->next;
j++;
}
if (p->next == NULL & j > i)
q = (p).next;
(p).next = p->next->next;
free(q);
{
if (ch == 3)
{
ListNode
L;
if(L->next==NULL)
return -1;
int j=1,i;
scanf("%d",&i);
printf("请输入你要修改的数据 1,销售商号码 2,配件号 3,工地号 4,数量");
ListNode
p=L->next;
while(p&&j<i)
{p=p->next;j++;}
if(j==i)
{
printf("找到该数据,请输入修改后的值:");
scanf("%d", LinkList->update);
p->data=LinkList->update;
}
}
}
}

```c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct SPB
{
int seller_num;
int date;
int fit_num;
int building_num;
int count;
int update;
struct SPB *next;
struct SPB *data;
}ListNode,*LinkList;
LinkList p,q;
int main()
{
struct SPB *head = (struct SPB *)malloc (sizeof(struct SPB));
if (head == NULL)
{ printf("分配失败,程序结束");
exit(0);
}
//LinkList p;
head->next = NULL;
struct SPBp;
p = head;
for (int i = 0; i < 4; i++)
{
struct SPB *s = (struct SPB *)malloc(sizeof (struct SPB));
p->next = s;
s->next = NULL;
p = s;
}//菜单
printf("MUNU\n");
printf("add data--------1\n");
printf("delete data------2\n");
printf("update data------3\n");
printf("exit -----------4a\n");
printf("******************\n\n");
int ch;
printf("请输入你的选择");
scanf("%d", &ch);
while (ch != 4)
{
if (ch == 1)
{ LinkList pf,pb;
int i,
head = NULL;
for (i = 0; i < 2; i++)
{
pb = (struct SPB *) malloc(sizeof (struct SPB));
if (NULL == pb)
{ printf("malloc fail!\n");
return head;
}
}
printf("seller's number: ");
printf("fit's number: ");
printf("builiding's number: ");
printf("count's number: ");
scanf("%d,%d,%d,%d", pb->seller_num, pb->fit_num, pb->building_num, pb->count);
}
if (ch == 2) {
int i;
LinkList L;
int j = 1;
//struct SPB *q, *p;
p=L; //没有初始化啊,后面怎么能用呢
printf("请输入需删除的项");
scanf("%d", i);
while (p->next && j < i)
{
p = p->next;
j++;
}

if (p->next == NULL & j > i)
q = (p)->next;
(p)->next = p->next->next;
free(q);

}
if (ch == 3)
{
LinkList L;
if(L->next==NULL)
return -1;
int j=1,i;
scanf("%d",&i);
printf("请输入你要修改的数据 1,销售商号码 2,配件号 3,工地号 4,数量");
//ListNodep=L->next;找不到ListNodep是干什么的
while(p&&j<i)
{p=p->next;j++;}
if(j==i)
{
printf("找到该数据,请输入修改后的值:");
scanf("%d", L->data );
p->data=L->data ;
}
}
}
}

```不知道是不是你想要的结果,反正错误是没有了,还有提醒一下,打代码的大括号要注意一下啊,都找不到在哪里是一段,尽量把操作放函数里头,没有的变量你咋调用啊!如果有帮助的话,请采纳一下谢谢


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct SPB
{
    int seller_num;
    int fit_num;
    int building_num;
    int count;
    int update;
    struct SPB* next;
    struct SPB* data;
}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 = (SPB*)malloc(sizeof(SPB));;
    p = head;
    for (int i = 0; i < 4; i++)
    {
        struct SPB* s = (struct SPB*)malloc(sizeof(struct SPB));
        p->next = s;
        s->next = NULL;
        p = s;
    }//菜单
    printf("MUNU\n");
    printf("add data--------1\n");
    printf("delete data------2\n");
    printf("update data------3\n");
    printf("exit -----------4a\n");
    printf("******************\n\n");
    int ch=0;
    printf("请输入你的选择");
    scanf("%d", &ch);
    while (ch != 4)
    {
        if (ch == 1)
        {
            struct SPB* pf = (SPB*)malloc(sizeof(SPB)), * pb;
            int i=0,
                head = NULL;
            for (i = 0; i < 2; i++)
            {
                pb = (SPB*)malloc(sizeof(struct SPB));
                if (NULL == pb)
                {
                    printf("malloc fail!\n");
                    return head;
                }
            }
            printf("seller's number: ");
            printf("fit's number: ");
            printf("builiding's number: ");
            printf("count's number: ");
            scanf("%d,%d,%d,%d", pb->seller_num, pb->fit_num, pb->building_num, pb->count);
        }
        if (ch == 2) {
            int i=0;
            ListNode* L = (SPB*)malloc(sizeof(SPB));;
            int j = 1;
            struct SPB* q = (SPB*)malloc(sizeof(SPB)), * p = (SPB*)malloc(sizeof(SPB));
            p = L; //没有初始化啊,后面怎么能用呢
            printf("请输入需删除的项");
            scanf("%d", i);
            while (p->next && j < i)
            {
                p = p->next;
                j++;
            }
            if (p->next == NULL & j > i)
                q = (p)->next;
            (p)->next = p->next->next;
            free(q);
            {
                if (ch == 3)
                {
                    ListNode* L= (SPB*)malloc(sizeof(SPB));
                    if (L->next == NULL)
                        return -1;
                    int j = 1, i=0;
                    scanf("%d", &i);
                    printf("请输入你要修改的数据 1,销售商号码 2,配件号 3,工地号 4,数量");
                    ListNode* p = L->next;
                    while (p && j < i)
                    {
                        p = p->next; j++;
                    }
                    if (j == i)
                    {
                        ListNode* linklist = (SPB*)malloc(sizeof(SPB));
                        printf("找到该数据,请输入修改后的值:");
                        scanf("%d", linklist->update);
                        p->data = linklist;
                    }
                }
            }
        }
    }
    return 0;
}

修改完善如下,供参考:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct SPB
{
    int seller_num;
    int fit_num;
    int building_num;
    int count;
        //int update;
    struct SPB* next;
        //struct SPB* data;
}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("\n*******MUNU*******\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;
}