读取位置冲突<据说标题很长会很火>

Cy_ss 发布于 2013/11/15 19:58
阅读 103
收藏 0
#include <stdio.h>
#include <stdlib.h>
typedef struct Node *Pnode;
struct Node{
	int info;
	Pnode link;
};
typedef struct Node *LinkList;
//创建空链表
LinkList create(){
	LinkList list=(LinkList)malloc(sizeof(struct Node));
	if(list!=NULL){
		list->link=NULL;
		printf("表创建成功\n");
	}
	else printf("out of space\n");
	return list;
}
//判断单链表是否为空
int isNulllist(LinkList list){
	printf("此单链表为空\n");
	return(list->link==NULL);
	
}
//链表的输入
LinkList Input(LinkList list){
	int data;
	int count=0;
	LinkList p,q;
	p=list;
	p->link=NULL;
	printf("please input  the data\n");
	while(count<10){
		scanf("%d",&data);
		q=(LinkList)malloc(sizeof(struct Node));
		q->info=data;
		q->link=p->link;
		p->link=q;
		count++;

	};
	printf("输入完毕\n");
	return p;
}
	

//输出数据
LinkList Output(LinkList list){
	LinkList p;
	p=list->link;//此处若是list输出则会缺少一个数据

	printf("你输入的数据为:\n");
	while(p!=NULL){
		printf("%3d",p->info);
		p=p->link;
	}

	return p;
}

//删除数据
LinkList Delete(LinkList list){
	int x;
	LinkList p,q;
	p=list;
	printf("请输入要删除的数据:\n");
	scanf("%d",&x);
	while(p->link->info!=x&&p->link!=NULL)p=p->link;
	if(p->link==NULL){
		printf("Not exist!\n");
		return 0;}
	else{
		q=p->link;
		p->link=q->link;
		free(q);
		}
	return p;
}




int main(){
	
	 int c=1;
	LinkList pl;
	pl=(LinkList)malloc(sizeof(struct Node));
	pl=create();
	
	//while(c!=0){
		
		scanf("%d",&c);
		
	switch(c){
	
	case 1:
			pl=Input(pl);
			//break;
	case 2:
			pl=Output(pl);
			//break;
	case 3:
			pl=Delete(pl);
			break;
	}

	
//	}
	
	
	return 1;
}求大神指教;
程序在输入数据和输出数据都没错误,而到删除数据这里,就会出现下图所示的错误
帮帮忙啦
加载中
返回顶部
顶部