|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}感觉整个问题出在全局函数定义哪里,思路是知道,不知道这样的程序改。
|
|