顺序表之单链表(C实现)
// Code file created by C Code Develop
#include "ccd.h"
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
//思考: 如果用cpp即C++编码会不会能够编译成功
typedef struct LNode{
int data;
struct LNode *next;
}LNode; // *LinkList;
typedef LNode* LinkList;
int main(int argc, char **argv)
{
//1、typedef int size_t;
// 数据类型重命名
typedef int* zhengzhengshu;
// int x =1;
// <==>
size_t x = 1;
// int *p; // <==>
// zhengzhengshu p;
LinkList L;
int a = InitList_head(L);
if(a = OK) printf("创建含有头节点的单链表成功");
LinkList LL;
a = InitList_head(LL);
if(a = OK) printf("创建含有头节点的单链表成功");
return 0;
}
//初始化一个没有头结点的单链表
int InitList_NoLNode(LNode *L) {
L == NULL;
return OK;
}
// 初始化单链表,带头节点
int InitList_head(LNode *L) {
L = (LNode *) malloc(sizeof(LNode)); // 为头节点分配空间
if (L == NULL)
return false; //内存不足分配失败
L -> next = NULL; // 头节点之后无节点
return OK;
}
//按位序插入(不带头节点)
int ListInsert(Linklist *L,int i,int e){
if(i < 1) return ERROR;
if(i = 1) {
LNode *s = (LNode *) malloc(sizeof(LNode));
s -> data = e;
s -> next = L;
L = s; //头指针指向新结点
return OK;
}
LNode * p; // 指针p指向当前扫描到的结点
int j = 1; // 当前p指向的是第几个结点
p = L; // p指向第1个结点 (不是头节点)
while(p!= NULL && j < i - 1) {
// 循环找到第i-1个结点
p=p->next;
j++;
}
// i值不合法
if(p == NULL)
return ERROR;
LNOde *s = (LNode *) malloc(sizeof(LNode));
s -> data = e;
s -> next = p -> next;
p -> next = s;
return OK;
}
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/WG11/p/15340249.html,作者:def_Class