|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct LNode {
- int data;
- struct LNode *next;
- } LNode, *LinkList;
- //初始化一个单链表(带头节点)
- int InitList(LinkList L) {
- L = (LNode *)malloc(sizeof(LNode));
- if (L == NULL) {
- //TODO
- printf("初始化单链表失败!");
- return -1;
- }
- L->next = NULL;
- return 1;
- }
- int ListInsert_L(LinkList L, int i, int e) {
- //在带头结点的单链表L的第i个位置之前插入元素e
- LNode *p = L;
- int j = 0;
- while (p !=NULL&& j < i - 1) {
- //TODO
- p = p->next;
- j++;
- }//寻找第i-1个结点
- if (!p||j>i-1) {
- //i小于1或者大于表长+1
- printf("i值不合法!");
- return -1;
- }
- LinkList s = (LinkList)malloc(sizeof(LNode));//生成新结点
- s->data = e;
- s->next = p->next;//插入L中
- p->next = s;
- return 1;
- }
- /* 遍历链表 */
- void TraverseList(LinkList L) {
- LNode *p = L->next;
- if (p == NULL) {
- printf("链表为空\n");
- }
- while (p != NULL) {
- printf("%d ", p->data);
- p = p->next;
- }
- }
- int main(void) {
- LinkList linkList;
- InitList(linkList);
- ListInsert_L(linkList,1,100);
- TraverseList(linkList);
- }
复制代码
运行没有结果
- int InitList(LinkList L) {
- L = (LNode *)malloc(sizeof(LNode)); //初始化没有完成,L是一个局部变量的指针,这里修改的是一个指针的值,而不是指针所指向的数据,L的数据并没有传回去
- if (L == NULL) {
- //TODO
- printf("初始化单链表失败!");
- return -1;
- }
- L->next = NULL;
- return 1;
- }
复制代码
|
|