首页 新闻 会员 周边

为啥实现不了我要的功能?求大神帮忙改改

0
悬赏园豆:10 [已关闭问题] 关闭于 2016-11-05 18:11
  1 #include <stdio.h>
  2 #include   "malloc.h"     
  3 #include   "stdlib.h"  
  4 #define OK 1
  5 #define ERROR 0
  6 typedef int Status;        
  7 typedef int ElemType;  
  8 typedef struct LNode
  9 {
 10  int data;
 11  struct LNode *next;
 12 }LNode,*LinkList;
 13 
 14 //尾插法添加数据
 15  LinkList CreateList_L(LinkList &L)
 16 {
 17  L=(LinkList)malloc(sizeof(LNode));
 18  L->next=NULL;
 19  LinkList s=(LinkList)malloc(sizeof(LNode));
 20  s=L;
 21 
 22  printf("建立单链表,输入元素个数:");
 23  int n;
 24  scanf("%d",&n);
 25  printf("输入元素:");
 26  for(int i=0;i<n;i++)
 27  {
 28  LinkList p=(LinkList)malloc(sizeof(LNode));
 29  scanf("%d",&p->data);
 30  s->next=p;
 31  s=p;
 32  s->next=NULL;
 33  }
 34 }
 35 
 36 Status ListInsert_L(LinkList &L,int i,ElemType e)
 37 {
 38     LNode *p; int j;
 39    p=L;j=0;
 40    while(p&&j<i-1)
 41   {
 42      p=p->next;
 43       ++j;
 44    }
 45    if(!p||j>i-1)
 46      return ERROR;
 47    LinkList s=(LinkList)malloc(sizeof(LNode));
 48    s->data=e;
 49     s->next=p->next;
 50    p->next=s;
 51    return OK;
 52 }
 53 
 54 
 55 Status ListDelete_L(LinkList &L,int i)
 56 {   
 57   LNode *p,*q;
 58   int j,e;
 59   p=L;j=0;
 60   while(p->next&&j<i-1)
 61 {
 62    p=p->next;++j;
 63 }
 64   if(!(p->next)||j>i-1)
 65     return ERROR;
 66    q=p->next;
 67    p->next=q->next;
 68    e=q->data;free(q);
 69    return OK;
 70 }
 71 
 72 Status LocateElem_L(LinkList &L,ElemType e)
 73 {
 74     int n=0;int x;
 75      LNode *q,*p;
 76      *q=*p;
 77     while(q!=0l&&q->data!=x)
 78     {
 79          q=q->next;
 80          n++;          
 81     }
 82     if(q==0)
 83       return(-1);
 84     else
 85       return(n+1);
 86  }
 87 
 88 int main()
 89 {
 90   int i,k,C;ElemType value;
 91     LinkList L;//定义头指针;
 92     do
 93     {
 94         printf("\n----------------------------------------\n");
 95         printf("1.创建单链表\n");
 96         printf("2.在i位置插入元素value\n");
 97         printf("3.删除第i各元素\n");
 98         printf("4.查找值为C的元素\n");
 99         printf("0.退出\n");
100         printf("请输入您的选择(1,2,3,4,0)\n");
101         printf("----------------------------------------\n");
102         scanf("%d",&k);
103         switch(k)
104         { 
105            case 1:
106                {
107                   
108                    L=CreateList_L(L);
109                    
110                }
111                break;
112            case 2:
113                {
114                    printf("请输入要插入的位置及元素:i,value\n");
115                    scanf("%d,%d",&i,&value);
116                    ListInsert_L(L,i,value);
117                    /*ListOut(L);*/
118                }
119                break;
120            case 3:
121                {
122                    
123                    printf("\n");
124                    printf("请输入i的值:\n");
125                    scanf("%d",&i);
126                    ListDelete_L(L,i);
127                   
128                }
129                break;
130            case 4:
131                {
132                    /*ListOut(L);*/
133                    printf("请输入要查找的元素值:\n");
134                    scanf("%d",&value);
135                    LocateElem_L(L,value);
136                }
137                break;
138            case 0:break;
139            default:printf("输入有误!请重新输入!");
140         }
141     }while(k!=0);     
142 }
明天争取的主页 明天争取 | 初学一级 | 园豆:113
提问于:2015-11-24 22:23
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册