Tag: singly linked list

插入单链表C

我在C中链接列表fucntion前面的插入有问题 #define arrSIZE = 100; struct listNode { char data[arrSIZE]; struct listNode *nextPtr; }; typedef struct listNode ListNode; void insertHead(ListNode *sPtr, char value[arrSIZE]){ ListNode *newPtr = (ListNode *)malloc(sizeof(ListNode)); strncpy(newPtr->data, value, arrSIZE); if(sPtr ==NULL){ newPtr->nextPtr=NULL; sPtr = newPtr; }else{ newPtr->nextPtr=sPtr; sPtr =newPtr; } }

通过引用传递链接列表时,在第n个位置添加元素

我是新链接列表这是我在LL中插入元素后的第二个问题。现在我试图在第n个位置插入元素。 我这样做: (1)首先在终端上取用户的大小。 (2)第二次从用户连续读取输入直到大小。 (3)我在LL的开头添加了在终端读取的元素。 (4)我打印出LL直到形成。 直到这里一切正常 (5)之后我尝试在LL的第n个位置添加,但是它给出了3个错误我已经在我的代码中的注释中解释了。 还请告诉我,我在第n个位置添加元素的逻辑是否正确? 注意: 我有义务仅在函数调用中传递List节点作为引用(并在函数定义中取消引用它们) 下面是我的完整代码,指出评论中的错误。 #include #include #include #include struct node { int freq; struct node * next; }; typedef struct node node; ///////////////////////////// Function definitions //////////////////////////////////////// insert_beginning(int size, node * * head) { node * temp; temp = (node * ) malloc(sizeof(node)); temp -> freq = size; […]

将数字插入已排序的链接列表,为什么数字每次都插入第二个位置?

我正在开发一个关于链表的项目,我无法将数字插入到已排序的链表中。 每次插入第二个位置的数字,我无法弄清楚问题出在哪里。这是我的代码: void insertSort(struct linkedList *n,int num,int *length){ //insert number to a sort linked list node *new = (node *) malloc(sizeof(node)); //create a new node new->next=NULL; new->data = num; while(n!=NULL&&n->data > new->data){ // find which position num should insert in sorted list n = n->next; } new->next = n->next; n->next= new; length += 1; } […]

使用for循环创建链接列表

这是我的结构 struct ListItem{ int data; struct ListItem *next; }; 假设链表的第一个节点将有data = 0,我想写一个for循环,创建一个大小为5的链表,但我不知道如何工作 我尝试了以下内容 int main(int argc, char* argv[]){ struct ListItem a; a.data = 0; for (int i = 1; i next; } } 但结果是a.data = 0和a.next-> data = 4

在C中对链表进行排序

我试图通过找到最大值,从其位置删除它,然后将其插入列表顶部来对链表进行排序。 我遇到的困难是实际删除和插入顶部。 问题似乎是在sortList函数中包含的while循环中的if条件,但我不确定如何修复它。 任何帮助,将不胜感激。 #include #include typedef struct node{ int num; struct node *next; } Node, *NodePtr; void printList(NodePtr np); NodePtr makeList(void); NodePtr makeNode(int n); NodePtr sortList(NodePtr list); int main(void) { NodePtr list; printf(“Enter numbers for the list (0 to end)\n”); list = makeList(); printList(list); list = sortList(list); printList(list); return 0; } NodePtr makeList(void) { […]