| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 456 人关注过本帖
标题:在vc中运行为什么不对啊,求改
只看楼主 收藏
漠河C
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-9-11
结帖率:50%
  问题点数:0  回复次数:0   
在vc中运行为什么不对啊,求改
假设在长度大于 1 的单循环链表中,既无头结点也无头指针。s 为指向某
个结点的指针,试编写算法删除结点*s 的直接前驱结点。

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
 
#define OK 1
#define OVERFLOW -2
#define ERROR 0
 
typedef int ElemType;
typedef int Status;
 
typedef struct LNode{
   ElemType data;
   struct LNode *next;
 }LNode,*LinkList;
///创建链表
Status CreateList(LinkList &L,int n)
{
   int i;
   L=(LinkList)malloc(sizeof(LNode));
   LinkList L1=L;
   if(!L)exit(ERROR);
        
   L1->next=NULL;
   printf("Please input numbers:\n");
   for(i=0;i<n;i++)
   {  
      scanf("%d",&L1->data);
      if(i==n-1)
          L1->next=L;//L1->next=NULL;
      else
      {
        LinkList p=(LinkList)malloc(sizeof(LNode));
        L1->next=p;
        L1=p;
      }
    }
    return OK;
}
///输出元素
Status PrintList(LinkList L,int m)
{
  int i=1;
  printf("The numbers are:");
  while(L)
  {
    printf("%d ",L->data);
    if(i>=m) break;
    if(L->next)
            {L=L->next;i++; }
    else
        break;
  }
  printf("\n");
  return OK;
}
 ///删除结点*s 的直接前驱结点
Status DeleteList(LinkList &L,LinkList s)
{
  //int locat=0;
  LinkList p,q;//=(LinkList)malloc(sizeof(LNode));
  p=s;
  //LinkList s=(LinkList)malloc(sizeof(LNode));
  //s->data=e;
  while(p->next->next!=s)
  {
    q=p;
    p=p->next;
    free(s);
    return OK;
  }
  q->next=s;
  free(q);
  return OK;
}  
 
//主函数
 int main()
 {
     int n,slocat;
     ElemType e;
     LinkList L,s;
     printf("Please input the number you need:");
     scanf("%d",&n);
     CreateList(L,n);
     PrintList(L,n);
     printf("请输入结点S的位置:");
     scanf("%d",&slocat);
     DeleteList(L,s);
     n=n-1;
     PrintList(L,n);
     system("pause");
 }
 

2017-09-25 20:10







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

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