我不知道函数insert_pos
为什么不起作用。错误是:
会员参考基础类型' list' (又名' struct le *')不是结构或联合。
#include <stdio.h>
#include "stdlib.h"
struct le{
int value;
struct le *next;
};
typedef struct le listenelement;
typedef listenelement *list;
int insert_pos(int v, int pos, list *l){
listenelement * new;
new = malloc(sizeof(listenelement));
new->value = v;
for(int i = 0; i < pos - 3; i++){
*l = l->next;
}
new->next = l->next;
l->next = new;
}
int delete elem(int e, list * l){
}
void sort(int m, list * l){
}
int main() {
return 0;
}
答案 0 :(得分:0)
为什么insert_pos使用 pos-3 ?
要修复语法错误,该行应为:
l = &((*l)->next);
当且仅当新节点插入列表的前面时,insert_pos才应更新传递的列表指针。
作为替代方案,insert_pos可以返回指向列表的指针:
listenelement * insert_pos(int v, int pos, listenelement *l)
答案 1 :(得分:0)
我希望你能用它。 它创建了一些链表的元素,并在位置
之后插入一个新节点#include <stdio.h>
#include <stdlib.h>
typedef struct le{
int value;
struct le *next;
}listenelement;
// this can create a new element of the linked list
listenelement *insert(int v,int pos, listenelement *first)
{
int i;
listenelement *move, *new;
new = (listenelement*)malloc(sizeof(listenelement));
// adatok bszuras
new->value = v;
//data insert end
new->next = NULL;
if (first == NULL)//emtpy list ?
return new;
for (move = first; move->next != NULL; move = move->next);
// emtpy cycle can find the last element of linked list
move->next = new;
return first;
}
listenelement* insert_pos(int v, int pos, listenelement *l){
listenelement * new;
new = (listenelement*)malloc(sizeof(listenelement));
new->value = v;
for (int i = 0; i < pos; i++){
l = l->next;
}
new->next = l->next;
l->next = new;
}
int delete_elem(int e, listenelement * l){
}
void sort(int m, listenelement * l){
}
int main() {
int i;
listenelement *first = NULL;
listenelement *act;
act = insert(1, 0, first);
insert(5, 0, act);
insert(6, 0, act);
insert(7, 0, act);
//insert after second element
insert_pos(11, 2, act);
insert(7, 0, act);
insert(7, 0, act);
// print the list elements
while (act != NULL){
printf(" content: %d\n", act->value);
act = act->next;
}
return 0;
}