主题:利用链式结构 实现线性表的基本运算
各位兄弟,小弟初学数据结构,但是却遇到了问题,问题如题。 在实现的代码中 逻辑上应该没有问题,但是就是不知道 运行不出来结果,希望给小弟指点一二!现将代码贴出来如下:
#include "stdlib.h"
void main()
{
int n,pos;char ch;
void build(int n);
linklist *get(int pos);
void insert(int pos);
void delete_node(int pos);
void output();
head=NULL;
printf("input the number of node:\t");
scanf("%d",&n);
build(n);
getchar();
printf("\n1--insert 2--delete 3--printout 0--exit\t");
ch=getchar();
while(ch!='0'){
switch(ch){
case '1':
printf("input the insert position:\t");
scanf("%d",&pos);
insert(pos);
output();
break;
case '2':
printf("input the delete position:\t");
scanf("%d",&pos);
output();
break;
case '0':
break;
case '3':
output();
break;
default:
printf("input error! input again!");
}
getchar();
printf("\n1---insert 2--delete 0--exit\t");
ch=getchar();
}
}
#include "stdio.h"
typedef struct link{
int data;
struct link *next;
}linklist;
linklist *head,*p;
void build(int n)
{
linklist *q;char ch;
int i;
printf("\n input %2d data:\t",n);
head=(struct link *)malloc(sizeof(struc link));
q=head;
scanf("%d",q->data);
getchar();
for(i=2;i<=n;i++);
{
q->next=(struct link *)malloc(sizeof(struct link));
q=q->next;
scanf("%d",q->data);
getchar();
}
q->next=NULL;
}
linklist * get(int pos)
{ linklist *p;
int i=0;
if(pos<1){printf("position out of scope.\n");
return(NULL);
}
p=head;
while(p->next && i<pos){
i++;
p=p->next;
}
return(p);
}
void insert(int pos)
{int i=1;
struct link *q;
p=get(pos);
if (p){
q=(struct link *)malloc(sizeof(struct link));
printf("\n input insert data:\t");
scanf("%d",q->data);
q->next=p->next;
p->next=q;
}
}
void delete_node(int pos)
{int i=1;
struct link *q;
p=get(pos);
if(p){
q=p->next;
p->next=q->next;
free(q);
}
}
void output()
{ struct link *q;
q=head;
while (q!=NULL){
printf("%3d",q->data);
q=q->next;
}
}
运行的时候 好像 build那个函数实现不了,因为 我的output不起作用! 哪位好心人帮我测试一下呗! 谢谢了
#include "stdlib.h"
void main()
{
int n,pos;char ch;
void build(int n);
linklist *get(int pos);
void insert(int pos);
void delete_node(int pos);
void output();
head=NULL;
printf("input the number of node:\t");
scanf("%d",&n);
build(n);
getchar();
printf("\n1--insert 2--delete 3--printout 0--exit\t");
ch=getchar();
while(ch!='0'){
switch(ch){
case '1':
printf("input the insert position:\t");
scanf("%d",&pos);
insert(pos);
output();
break;
case '2':
printf("input the delete position:\t");
scanf("%d",&pos);
output();
break;
case '0':
break;
case '3':
output();
break;
default:
printf("input error! input again!");
}
getchar();
printf("\n1---insert 2--delete 0--exit\t");
ch=getchar();
}
}
#include "stdio.h"
typedef struct link{
int data;
struct link *next;
}linklist;
linklist *head,*p;
void build(int n)
{
linklist *q;char ch;
int i;
printf("\n input %2d data:\t",n);
head=(struct link *)malloc(sizeof(struc link));
q=head;
scanf("%d",q->data);
getchar();
for(i=2;i<=n;i++);
{
q->next=(struct link *)malloc(sizeof(struct link));
q=q->next;
scanf("%d",q->data);
getchar();
}
q->next=NULL;
}
linklist * get(int pos)
{ linklist *p;
int i=0;
if(pos<1){printf("position out of scope.\n");
return(NULL);
}
p=head;
while(p->next && i<pos){
i++;
p=p->next;
}
return(p);
}
void insert(int pos)
{int i=1;
struct link *q;
p=get(pos);
if (p){
q=(struct link *)malloc(sizeof(struct link));
printf("\n input insert data:\t");
scanf("%d",q->data);
q->next=p->next;
p->next=q;
}
}
void delete_node(int pos)
{int i=1;
struct link *q;
p=get(pos);
if(p){
q=p->next;
p->next=q->next;
free(q);
}
}
void output()
{ struct link *q;
q=head;
while (q!=NULL){
printf("%3d",q->data);
q=q->next;
}
}
运行的时候 好像 build那个函数实现不了,因为 我的output不起作用! 哪位好心人帮我测试一下呗! 谢谢了