幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2740|回复: 1

[通用编程] 链表问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-6-3 08:59:15 | 显示全部楼层 |阅读模式
程序如下:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct lnode
  4. {
  5.     char data;
  6.     struct lnode *next;
  7. };
  8. struct lnode *head;
  9. setnull(struct lnode **p)
  10. {
  11.     *p=NULL;
  12. }
  13. void insert(struct lnode **p,char x,int i)
  14. {
  15.     int j=1;
  16.     struct lnode *s,*q;
  17.     s=(struct lnode *)malloc(sizeof(struct lnode));
  18.     s->data=x;
  19.     q=*p;
  20.     if(i==1)
  21.     {
  22.         s->next=q;
  23.         *p=s;
  24.     }
  25.     else
  26.     {
  27.         while(j<i-1&&q->next!=NULL)
  28.         {
  29.             q=q->next;j++;
  30.         }
  31.         if(j==i-1)
  32.         {
  33.             s->next=q->next;
  34.             q->next=s;
  35.         }
  36.         else
  37.             printf("位置参数不对\n");
  38.     }
  39. }
  40. void del(struct lnode **p,int i)
  41. {
  42.     int j=1;
  43.     struct lnode *q=*p,*t;
  44.     if(i==1)
  45.     {
  46.         t=q;
  47.         *p=q->next;
  48.     }
  49.     else
  50.     {
  51.         while(j<i-1&&q->next!=NULL)
  52.         {
  53.             q=q->next;j++;
  54.         }
  55.         if(q->next!=NULL&&j==i-1)
  56.         {
  57.             t=q->next;
  58.             q->next=t->next;
  59.         }
  60.         else
  61.             printf("位置不对.");
  62.     }
  63.     if(t!=NULL)
  64.         free(t);
  65. }
  66. void display(struct lnode **p)
  67. {
  68.     struct lnode *q;
  69.     q=*p;
  70.     printf("链表显示:");
  71.     if(q==NULL)
  72.         printf("链表为空:");
  73.     else if(q->next==NULL)
  74.         printf("%c\n",q->data);
  75.     else
  76.     {
  77.         while(q->next!=NULL)
  78.         {
  79.             printf("%c-",q->data);q=q->next;
  80.         }
  81.         printf("%c",q->data);
  82.     }
  83.     printf("\n");
  84. }
  85. void main()
  86. {
  87.                      setnull(&head);
  88.                      insert(&head,'a',1);
  89.    
  90.    
  91.     display(&head);
  92.    
  93. }
复制代码

这是一个单链表,是通过直接接入数据,如果我想先输入一组数据,然后再通过某些条件再插入某个地方的话,那么这组数据应该如何生成呢?[s:3]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-6-3 15:12:47 | 显示全部楼层
//pHead是头结点,i是计数器;
void createlist(struct Inode *pHead,int i)
{
    struct  Inode *pTemp;
    int iCount;
    pTemp=pHead;
    for(iCount=0;iCount<i;iCount++)
    {   
        scanf("%c",pHead->data);
        pHead=pHead->netx;
    }
        pHead=pTemp;
}
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-11-1 07:10 , Processed in 0.023472 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表