回 帖 发 新 帖 刷新版面

主题:[原创]程序在这,请帮忙改进

#include<stdio.h>
 #include<conio.h>
 #define N 3
    charu(node *p,int x,int i)
       {  node *s,*q;
  s=(node *)malloc(sizeof(node));
    s->data=x;
    if(i==0)
      {s->next=p->next;
       p->next=s;
       }
       else
        {q=get(p,i-1);
         if(q==NULL)
            return 0;
              else
                {s->next=q->next;
                  q->next=s;
                 }
         }
         return 1;
     }
   main()
    { typedef struct  /*     */
           { int data;
             struct node *next;
            }node,*p;

        int i,n;
          charu(p,2,1);/* 2为插入的元素直,1为插入的位置*/
           for(i=0,i<N,i++)
             scanf("%d\n",&p->data);
             n=N;
             n++;
             for(i=0,i<n;i++)
              { printf("%d\n",p->data);
                 p=p->next;}   getch();
    }
 

回复列表 (共3个回复)

沙发

应该把数据类型定义 typedef struct  /*     */
           { int data;
             struct node *next;
            }node,*p;
放到前面去

还有q=get(p,i-1);这个语句里面的get()是什么函数来的?你好像没有定义吧

板凳

#include <malloc.h>
#include<stdio.h>
 #include<conio.h>
 #define N 3
 typedef struct node
 { int data;
   struct node *next;
 }node,LNode,*LinkList;
 void CreateList_L(LinkList &L,int n)
{//顺序输入n个元素的值,建立带头结点的单链线性表
 LinkList p,q; int i, x;
  L=(LinkList)malloc(sizeof(LNode));
  L->next=NULL;
  q=L;
  for(i=1;i<=n;i++)
  {p=(LinkList)malloc(sizeof(LNode));
   printf("\n请输入第%d个元素",i);
   scanf("%d",&x);
   p->data=x;
   p->next=q->next;
   q->next=p;
   q=q->next;
  }
 } 
 node* get(node *p,int i)
 {//找到第i-1个结点
 node *q; int j;
  q=p;j=0;
  while(q&&j<i-1) {q=q->next;j++;}
  if(!q ||j>i-1) return 0;
   else return q;
 }
 charu(node *p,int x,int i)
   {//单链表带头结点,p是头指针
     node *s,*q;
     s=(node *)malloc(sizeof(node));
    s->data=x;
    if(i==1)
      {s->next=p->next;
       p->next=s;
       }
       else
        {q=get(p,i-1);
         if(q==NULL)
            return 0;
              else
                {s->next=q->next;
                  q->next=s;
                 }
         }
         return 1;
     }
   main()
   {  node *p,*q;
       int i;
       CreateList_L(p,N);//创建链表
       printf("新创建的链表是:");
       q=p->next;
       while(q) {printf("%3d",q->data);q=q->next;}//输出链表

        charu(p,2,1);/* 2为插入的元素直,1为插入的位置*/
        printf("\n在第1个位置插入数值2后,链表为:");
         
       q=p->next;
       while(q) {printf("%3d",q->data);q=q->next;}
       printf("\n");
   }我自己调试通过了,不知是否符合你题目的要求。

3 楼

前面的朋友请加我QQ,交个朋友怎么样啊?151397316

我来回复

您尚未登录,请登录后再回复。点此登录或注册