程序结果有问题,麻烦哪位高手解决下!
NSLinList.htypedef struct node{
DataType data;
struct node *next;
}NSLNode;
void NSLLInitiate(NSLNode **head){
*head=NULL;
}
int NSLLInsert(NSLNode **head,int i,DataType x){
NSLNode *p,*q;
int j;
p=*head;j=1;
while(p!=NULL&&j<i-1){
p=p->next;j++;
}
if(j!=i-1&&i!=1){
printf("插入位置参数错!");
return 0;
}
if((q=(NSLNode *)malloc(sizeof(NSLNode)))==NULL)exit(1);
q->data=x;
if(i==1){
q->next=*head;
*head=q;
//printf("%d\n",(*head)->data);
}
else{
q->next=p->next;
p->next=q;
//printf("%d\n",p->next->data);
}
return 1;
}
int NSLLDelete(NSLNode **head,int i,DataType *x)
{
NSLNode *p,*q;
int j;
p=*head;j=1;
while(p!=NULL&&p->next!=NULL&&j<i-1){
p=p->next;
j++;
}
if(j!=i-1&&i!=1){
printf("删除位置参数错!");
return 0;
}
if(i==1){
q=p;
*head=(*head)->next;
}
else
{
q=p->next;
p->next=p->next->next;
}
*x=q->data;free(q);
return 1;
}
main.cpp
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int DataType;
#include"NSLinList.h"
void main(){
DataType test[6]={64,6,7,89,12,24};
NSLNode *head,*p;
int n=6,i;
DataType *x;
NSLLInitiate(&head);
for(i=1;i<=n;i++){
NSLLInsert(&head,i,test[i-1]);
}
for(i=n;i>=1;i--){
NSLLDelete(&head,i,x);
printf("%d\n",*x);
}
printf("\n");
}