鱼C论坛

 找回密码
 立即注册
查看: 3646|回复: 0

一个链表,删除和插入有问题,麻烦改改

[复制链接]
发表于 2012-10-22 12:28:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef  int datatype;
typedef struct node
{ datatype data;
struct node *next;
}linklist;
linklist *head,*s,*p;
   
linklist *CREATLISTE();
int i,x;
void welcome();                     //函数声明
void output(linklist*head);
linklist*get(linklist*head,int i);
void DELETEAFTER(linklist*p,int x);
void INSERTAFTER(linklist*p,int x);
void  main()
{
while(1)
{
welcome();
printf("请输入选项");
scanf("%d",&x);
switch(x)
{
    case 1:printf("\n请输入字符: \n");
     CREATLISTE();break;
    case 2:printf("按序号查找,请输入序号");
           scanf("%d",&i);
           printf("%c\n",get(head,i)->data);break;
    case 3:printf("请输入要删除的字符:\n");
           scanf("%d",&x);
     DELETEAFTER(p,x);break;
case 4:output(head);break;
    case 5:printf("请输入要插入的字符:\n");
           scanf("%c",&x);
     INSERTAFTER(head,x);break;
    case 6:exit(0);
}
}
}
void welcome()
{
printf("****************************菜单*****************************\n");
    printf("1建立     2查找     3删除      4输出      5插入    6退出\n");
printf("**************************************************************\n");

}
linklist *CREATLISTE()              //函数定义
{
printf("输入以$结束");
char ch;
head=NULL;
ch=getchar();
while(ch!='$')
{
  s=(linklist *)malloc(sizeof(linklist));
  s->data=ch;
  s->next=head;
  head=s;
  ch=getchar();
}
return head;
}
void output(linklist*head)      
{
  p=head;
  while(p!=NULL)
  {  printf("%c",p->data);
      p=p->next;
  }
}

linklist*get(linklist*head,int i)
{
  int j;
  linklist*p;
  p=head;j=0;
  while((p->next!=NULL)&&(j<i))
  {
   p=p->next;
   j++;
  }
  if(i==j)return p;
  else return NULL;
}
void DELETEAFTER(linklist*p,int x)
{
linklist *pp=p;
linklist *q;
int i=0;
while(pp->next!=NULL&&i<x-1)
{
  pp=pp->next;
  i++;
}
if(pp->next==NULL||i>x-1)
{
  printf("没这个位置\n");
  exit(0);
}
q=pp->next;
pp->next=q->next;
free(q);
}
void INSERTAFTER(linklist*p,int x)
{
linklist *s;
s=(linklist*)malloc(sizeof(linklist));
s->data=x;
s->next=p->next;p->next=s;
}感觉整个问题出在全局函数定义哪里,思路是知道,不知道这样的程序改。

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 20:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表