Дополнительные связанные списки на C

Прежде чем я начну, я хочу прояснить, что мне не нужен ответ на мою домашнюю проблему , Я просто хотел бы, чтобы кто-нибудь действительно мог объяснить, что именно мой инструктор просит в этом задании (желательно в упрощенной версии), и, возможно, это был бы полезный толчок в правильном направлении. У меня много проблем с этой темой, и всякий раз, когда я спрашиваю инструктора, я обнаруживаю, что он меня смущает больше всего на свете.

Итак, вот назначение:

1. Добавьте новую функцию insertN (struct list * x, int num, int pos, int n), которая вставит n копий целого числа в позицию pos, если это возможно (если pos слишком велик, примите соответствующие меры). Главное, что меня смущает, это то, что он подразумевает под поз.

Вот код, с которым я работаю, который был написан моим учителем, и я должен его изменить.

#include<stdio.h>
#include<stdlib.h>

struct list {
    int data;
    struct list * next;
        };

struct list *slist;

/*adds a node at the end of the linked list*/
void insert(struct list *x,int num){
  /*if the list is empty*/
  if(x==NULL){
    /*create first node*/
    slist=malloc(sizeof(struct list));
    slist->data=num; 
    slist->next=NULL;
    }
  else{
    /*go to the last node*/
    while(x->next!=NULL) x=x->next;
    /*add node at the end*/
      x->next=malloc(sizeof(struct list));
      x->next->data=num;
      x->next->next=NULL;

  }
}


void display(struct list *x){
  /*traverse the entire linked list*/
  while(x!=NULL){
    printf("%d->",x->data);
    x=x->next;
  }
  printf("NULL");
}

void reverse(struct list *x){
  struct list *prev,*rev,*temp;

  prev=x;
  rev=NULL;

  while(prev!=NULL){
    temp=rev;
    rev=prev;
    prev=prev->next;
    rev->next=temp;
  }
  slist=rev;
}

void search(struct list *x,int a){
struct list *runner;
int found=0;
  for(runner=x;runner!=NULL;runner=runner->next){
  if(runner->data==a){
    printf("data found"); 
    found=1;
break;
  }
  }
if(found==0) printf("data not found");

}

main(){
  int number,a;

  slist=NULL;/*empty linked list*/

  printf("Enter the element for data part:");
  scanf("%d",&number);
  insert(slist,10);
  insert(slist,number);

  insert(slist,20);

  display(slist);
  printf("\n");

  reverse(slist);

  display(slist);
  printf("\nEnter the element for searching:");
  scanf("%d",&a);
  search(slist,a);
  printf("\n");
  getchar();
  getchar();
}

Опять же, я не жду ответа на проблему, просто объяснение и толчок в правильном направлении .

12
задан Bill the Lizard 16 September 2012 в 15:44
поделиться