标题:链表的几个基本操作,有些错误,大家帮我改改
取消只看楼主
wshyj18
Rank: 1
等 级:新手上路
帖 子:124
专家分:0
注 册:2007-5-14
 问题点数:0 回复次数:0 
链表的几个基本操作,有些错误,大家帮我改改
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct node
{
    int date;
    struct node *next;
}Snode;
void Creat(Snode *p,int n)/*创一个链表,并赋值。*/
{
    int i;
 p=(Snode*)malloc(sizeof(Snode));
 p->next=NULL;
 for(i=0;i<n;i++)
    {
     scanf("%d",&p->date);
    }
}
int getlength(Snode *p)/*求长度*/
{
    Snode *q;
    int a=0;
    q=p->next;
    while(q!=NULL)
    {  a++;
      q=q->next;
    }
       return a;
}
Snode *get(Snode *p,int i)/*取第I个元素的地址*/
{
 int j=0;
 Snode *q=p->next;
 while(q!=NULL&&j<i)
 {
  p=p->next;
  j++;
 }
 if(q!=NULL)
     {
      return q;
     }
 else
    {
     cout <<"您输入的I是错误的"<<end1;
     return NULL;
    }
}
void insnode(Snode *p,int k,int a)/*在第K位插入a*/
{
 Snode *q,*s;
 s=(Snode*)malloc(sizeof(Snode));
 s->date=a;
 if(k==0)
    {
     s->next=p->next;
      p->next=s;
    }
else{
  q=get(p,k-1);
  if(q!=NULL)
   {
     s->next=q->next;
     q->next=s;
    }
    else
    {
    return 0;
    }
  }
   return 1;
}
void delnode(Snode *p,int b)/*删除第b位的元素*/
{
 Snode *q,*t;
 if(b==0)
 {
   t=p->next;
   p->next=t->next;
   free(t);
 }
  else
  {
    q=get(p,b-1);
    if(q==NULL)
     return 0;
     else
     {
        t=q->next;
        q->next=t->next;
        free(t);
     }
  }
  return 1 ;
}
void print(Snode *p)/*输出链表*/
{
    Snode *q=p->next;
    int i;
 for(i=0;i<getlength(p);i++)
    {
     printf("%d",p->date);
    }
}
main()/*这当然是主函数了*/
{
 Snode *p;
 int a=6;
  Creat(&p,a);
  insnode(&p,4,7);
   delnode(&p,4);
   println(&p);
}
大家帮帮忙,有几个错误不会改
搜索更多相关主题的帖子: 链表 int Snode next include 
2007-12-13 14:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-192219-1-1.html




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

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