資料結構-單連結串列查詢按序號查詢

1 每臨大事有靜氣發表於2017-09-13
#include<iostream>
#include<stdlib.h>
#define ERROR -40000
using namespace std;

typedef struct LNODE
{
	int data;
	struct LNODE *next;
}Lnode;

Lnode *Input(int n)
{
	Lnode *head,*p,*q;
	head=p=(Lnode*)malloc(sizeof(Lnode));
	p->next=NULL;
	for(int i=0;i<n;i++)
	{
		int data;
		cin>>data;
		q=(Lnode*)malloc(sizeof(Lnode));
		q->data=data;
		q->next=p->next;
		p->next=q;
		p=q;
	}
	return head;
}

int FindData(Lnode *L,int id)
{
	Lnode *p;
	p=L->next;
	int j=1;
	while(p!=NULL&&j<id)
	{
		p=p->next;
		j++;
	}
	if(j!=id||p==NULL) return ERROR;//書上沒有此處判斷n+1位置輸入後bug,指標沒有分配記憶體 
	else return p->data;
}

int main()
{
	int n;
	while(cin>>n)
	{
		Lnode *p=Input(n);
		cout<<"資料查詢:"<<endl;
		while(1)
		{
			int num;
			cout<<"輸入查詢序號:"<<endl;
			cin>>num;
			int find_data=FindData(p,num);
			if(find_data!=ERROR)
			{
				cout<<"查詢結果為:"<<find_data<<endl;
			} 
			else
			{
				cout<<"無法查詢結果"<<endl; 
			}
		}
	}
	return 0;
}

相關文章