回 帖 发 新 帖 刷新版面

主题:请教一个小问题,谢谢

我刚开始接触数据结构这门课,很多简单的还不懂,希望大家多帮助,谢谢。

创建一个链表,怎样给它赋初值?用c实现算法。
void InitList(LinkList *L)
 { /* 操作结果:构造一个空的线性表L */
   *L=(LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */
   if(!*L) /* 存储分配失败 */
     exit(OVERFLOW);
   (*L)->next=*L; /* 指针域指向头结点 */
}

然后呢?
还有在main函数里怎么写?比如我要创建一个链表,然后插入一个值,怎么写c程序?
谢谢了

回复列表 (共5个回复)

沙发

1:定义一个struct node;
2:定义一个空链表;
3:写插入函数insertelem();
4:需要什么功能就写什么功能的函数;
多看书上的完整的例子,敲敲键盘练练,就会了!

板凳


void InitList(LinkList *L)
这句编译的时候通不过,错在哪了?

3 楼

是结构LinkList没有定义吧

4 楼

struct LNode
{
    int data;
    struct LNode *next;
};

struct LNode *InitList(LNode *L)
 { 
   L=(LNode *)malloc(sizeof(struct LNode)); 
   if(!*L) 
      exit(OVERFLOW);
   (*L)->next=NULL;
   return *L;
}

struct LNode *InsertList(LNode *L)
{
    //函数体自己写了吧!
    return *L;

主函数:
mian()
{
    struct LNode *Lhead;
    Lhead=InitList(Lhead);
    
    ........
    Lhead=InsertList(Lhead);
    .......
    
}

5 楼

struct LNode *InitList(LNode *L)
 { 
   L=(LNode *)malloc(sizeof(struct LNode)); 
   if(!*L) 
      exit(OVERFLOW);
   (*L)->next=NULL;
   return *L;
}

既然都返回L了就不要参数了吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册