关于c语言链表问题 50
关于c语言链表问题关于c语言链表问题。我创建了个链表嘛,然后有头节点,然后我想测试下是否成功,发现这个链表中结合体的一个数组元素没法赋值,内存报错。我想问下,为什么会出现...
关于c语言链表问题关于c语言链表问题。我创建了个 链表嘛,然后有头节点,然后我想测试下是否成功,发现这个链表中结合体的一个数组元素没法赋值,内存报错。我想问下,为什么会出现这种情况?那个地方错了,该怎么改啊? 谢谢大神相助!
展开
1个回答
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct node {
char num[15];
struct node *next;
}*List,NODE,*pNode;
List InitList() {
pNode head = (pNode)malloc(sizeof(NODE));
if(head == NULL) return NULL;
head->next = NULL;
head->num[0] = 0;
return head;
}
int InsertNode(List head,char num[]) {//增序插入结点
if(head == NULL) return 0;
pNode p = head;
pNode q = (pNode)malloc(sizeof(NODE));
strcpy(q->num,num);
int res;
while(p->next) {
res = strcmp(num,p->next->num);
if(res == 0) return 0;
else if(res < 0) {
q->next = p->next;
p->next = q;
return 1;
}
p = p->next;
}
p->next = q;
q->next = NULL;
return 1;
}
void show(List head) {
if(head == NULL) return;
pNode p = head->next;
while(p) {
printf("%s\n",p->num);
p = p->next;
}
}
int main(void) {
List head = InitList();
char s[8][10] = {"int","char","double","float","void","continue","return","sizeof"};
int i,n = 8;
printf("未序前:\n");
for(i = 0;i < n;++i) {
printf("%s\n",s[i]);
InsertNode(head,s[i]);
}
printf("增序后:\n");
show(head);
return 0;
}
更多追问追答
追问
有点看不懂,我就想知道 怎么复制啊,你可以用文字阐述下原因嘛?
有点看不懂,我就想知道 怎么赋值啊,你可以用文字阐述下原因嘛?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询