鱼C论坛

 找回密码
 立即注册
查看: 2087|回复: 0

链表的倒叙和正序输出问题

[复制链接]
发表于 2012-5-27 14:54:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
typedef int ElemType;
typedef struct node{
    ElemType data;   /*数据域*/
    struct node *next;  /*指针域*/
}LNode,*LinkList;
LinkList GreatLinkList(int n){
    LinkList p,r,list=NULL;
    ElemType e;
    int i;
    for(i=1;i<=n;i++){
        scanf("%d",&e);
        p=(LinkList)malloc(sizeof(LNode));
        p->data=e;
        p->next=NULL;
        if(!list)
            list=p;
        else
            r->next=p;
        r=p;
    }
    return list;
}
void insertList(LinkList *list,LinkList q,ElemType e){
    LinkList p;
    p=( LinkList)malloc(sizeof(LNode));
    p->data=e;
    if(!*list){
    *list=p;
    p->next=NULL;
    }
    else{
        p->next=q->next;
        q->next=p;
  //q=q->next;
    }   
//q=q->next;
}
void delLink(LinkList *list ,int n){
    LinkList r,q;
int i;
q=*list;
  for(i=0;i<n;i++)    /*将指针q指向链表第5个元素*/
    {
        q=q->next;
    }
    if(q==*list){
        *list=q->next;
        free(q);
    }
    else{
        for(r=*list;r->next!=q;r=r->next)
   ;
        if(r->next!=NULL){
            r->next=q->next;
            free(q);
            }
    }
}
void  destroyLinkList(LinkList *list){
    LinkList p,q;
    p=*list;               
    while(p){
    q=p->next;
    free(p);
    p=q;
    }
    *list=NULL;
}
int main(void)
{
    int e,i;
    LinkList l,q;
    q=l=GreatLinkList(1);   /*创建一个链表结点,q和l指向该结点*/
    scanf("%d",&e);
    while(e)             /*循环地输入数据,同时插入新生成的结点*/
    {
      insertList(&l,q,e) ;
      //q=q->next;   、
/*在这里进行 就是表明尾插法,如果不加就是头插入法倒叙输入,可是我在插入的时候加了q=q->next; 为什么还是倒叙输出*/
      scanf("%d",&e);
    }
    q=l;
    printf("The content of the linklist\n");
    while(q)          /*输出链表中的内容*/
    {
      printf("%d ",q->data);
      q=q->next;
    }
    q=l;
    printf("\nDelete the fifth element\n");
    delLink(&l,4);     /*删除q所指的结点*/
    q=l;
    while(q)            /*打印出删除后的结果*/
    {
      printf("%d ",q->data);
      q=q->next;
    }
    destroyLinkList(&l);  /*释放掉该链表*/
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 04:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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