Я - первый раз, поэтому я не знаю норм, простите, если у меня плохое форматирование.
Я новичок в C программировании и недавно попал в связанные списки, приведенный ниже код был моей дурацкой попыткой сделать один .. Мне было интересно, будет ли кто-нибудь достаточно любезен, чтобы go просмотреть мой код и объяснить, почему я сталкиваюсь с проблемами. Заранее спасибо! Я постараюсь ответить на любые вопросы!
Чтобы объяснить некоторые из моих функций,
- createlinklist: просто инициализирует struct linklist и добавляет значение int
- addlinkfirst : добавляет узел в конец
- removelinklast: удаляет узел с конца
- dispalylinklist: печатает содержимое списка ссылок
Код:
#include<stdio.h>
struct linklist {
int data;
struct linklist* link;
};
void createlinklist (struct linklist* newlist, int data){
newlist->data = data;
newlist->link = NULL;
}
void addlinkfirst (struct linklist* list, int data){
while(list->link != NULL)
list = list->link;
struct linklist *newlist = malloc(sizeof(struct linklist));
newlist->link = NULL;
list->link = &newlist;
newlist->data = data;
}
void removelinklast (struct linklist* list){
struct linklist* temp;
while(list != NULL){
temp = &list;
list = list-> link;
}
temp->data = NULL;
temp->link = NULL;
}
void displaylinklist (struct linklist* list) {
printf("\n");
while(list != NULL){
printf(" %d-",list->data);
list = list->link;
}
printf("\n");
}
int main () {
int x = 1, data, x1;
struct linklist test;
while(x!=0){
printf("Press 4 to create, Press 1 insert, Press 2 delete, Press 3 Display, Press 0 to Exit \n");
scanf("%d",&x);
//i assume you will be choosing 4 first then the other options
switch(x){
case 4: printf("\nEnter data for the first element:"); scanf("%d",&data); createlinklist(&test,data); break;
case 1: printf("\nEnter data:"); scanf("%d",&x1); addlinkfirst(&test,x1); break;
case 2: printf("\nDeleted"); removelinklast(&test); break;
case 3: displaylinklist(&test); break;
case 0: break;
default: printf("Invalid Input Try again\n");
}
}
printf("\nThank you for using my linklist program;");
return 0;
}