| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3053 人关注过本帖
标题:不懂,这个代码哪里错了,怎么改
取消只看楼主 加入收藏
我的小猪猪
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-10-2
收藏
 问题点数:0 回复次数:0 
不懂,这个代码哪里错了,怎么改
#include <stdio.h>
#include <stdlib.h>

#define ERROR NULL
typedef enum { FALSE, TRUE } BOOL;
typedef int ElementType;
typedef struct LNode *PtrToLNode;
struct LNode {
    ElementType Data;
    PtrToLNode Next;
};
typedef PtrToLNode Position;
typedef PtrToLNode List;

List MakeEmpty();
Position Find(List L, ElementType X);
bool Insert(List L, ElementType X, Position P);
bool Delete(List L, Position P);

int main()
{
    List L;
    ElementType X;
    Position P;
    int N;
    bool flag;

    L = MakeEmpty();
    scanf("%d", &N);
    while (N--) {
        scanf("%d", &X);
        flag = Insert(L, X, L->Next);
        if (flag == false) printf("Wrong Answer\n");
    }
    scanf("%d", &N);
    while (N--) {
        scanf("%d", &X);
        P = Find(L, X);
        if (P == ERROR)
            printf("Finding Error: %d is not in.\n", X);
        else {
            flag = Delete(L, P);
            printf("%d is found and deleted.\n", X);
            if (flag == false)
                printf("Wrong Answer.\n");
        }
    }
    flag = Insert(L, X, NULL);
    if (flag == false) printf("Wrong Answer\n");
    else
        printf("%d is inserted as the last element.\n", X);
    P = (Position)malloc(sizeof(struct LNode));
    flag = Insert(L, X, P);
    if (flag == true) printf("Wrong Answer\n");
    flag = Delete(L, P);
    if (flag == true) printf("Wrong Answer\n");
    for (P = L->Next; P; P = P->Next) printf("%d ", P->Data);
    return 0;
}
List MakeEmpty(){
    List L;
    L = (List)malloc(sizeof(struct LNode));
    L->Next = NULL;
    return L;

}
Position Find(List L, ElementType X){
    Position p;
    if (L == NULL)
        return ERROR;
    while (L != NULL){
        if (L->Data == X){
            p = L;
            return p;
        }
        L = L->Next;
    }
    return ERROR;

}
bool Insert(List L, ElementType X, Position P){
    List tmp = L;
    List apply = NULL;
    if (L == P){
        apply = (List)malloc(sizeof(struct LNode));
        apply->Data = X;
        apply->Next = P;
        tmp = apply;
        return tmp;
    }
    while (L->Next != P && L->Next != NULL){
        L = L->Next;
        if (L->Next == NULL&&P != NULL){
            printf("Wrong Position for Insertion");
            return ERROR;
        }
        else{
            apply = (List)malloc(sizeof(struct LNode));
            apply->Data = X;
            L->Next = apply;
            apply->Next = P;
            return tmp;

        }
    }
  bool Delete(List L, Position P){   
         List tmp = L;
        if (L == NULL || P == NULL){
            printf("Wrong Position for Insertion");
            return ERROR;
        }
        if (L = P){
            tmp = L->Next;
            free(L);
            return tmp;
        }
        while (L->Next != P&&L->Next != NULL)
            L = L->Next;
        if (L->Next == NULL){
            printf("Wrong Position for Insertion");
            return ERROR;
        }
        else{
            L->Next = P->Next;
            free(P);
            return tmp;
        }
    }









搜索更多相关主题的帖子: include 
2016-10-02 13:57
快速回复:不懂,这个代码哪里错了,怎么改
数据加载中...
 
   



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

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