| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 475 人关注过本帖
标题:单链表的简单操作
只看楼主 加入收藏
求知者1994
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-11-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
单链表的简单操作
单链表的插入怎么编写程序啊,希望有人回答
搜索更多相关主题的帖子: 编写程序 
2013-11-03 23:00
rchunjiang
Rank: 4
来 自:大连
等 级:业余侠客
帖 子:42
专家分:262
注 册:2013-10-25
收藏
得分:14 
回复 楼主 求知者1994
自己先试着写写,再把代码粘上
2013-11-03 23:10
求知者1994
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-11-3
收藏
得分:0 
回复 2楼 rchunjiang
我写了的,可是怎么都不对,始终调试不出来
2013-11-04 23:44
rchunjiang
Rank: 4
来 自:大连
等 级:业余侠客
帖 子:42
专家分:262
注 册:2013-10-25
收藏
得分:0 
回复 3楼 求知者1994
把代码粘上看看
2013-11-05 18:54
求知者1994
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-11-3
收藏
得分:0 
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"ctype.h"
typedef struct node          //定义结点
   {
    char data[10];             //结点的数据域为字符串
    struct node *next;      //结点的指针域
   }ListNode;
typedef ListNode * LinkList;         // 自定义LinkList单链表类型
LinkList CreatListR1();              //函数,用尾插入法建立带头结点的单链表
ListNode *LocateNode();              //函数,按值查找结点
void DeleteList();                   //函数,删除指定值的结点
void printlist();                    //函数,打印链表中的所有值
void DeleteAll();                    //函数,删除所有结点,释放内存

//==========按值查找结点,找到则返回该结点的位置,否则返回NULL==========
ListNode *LocateNode(LinkList head, char *key)
{
    ListNode *p=head->next; //从开始结点比较
    while(p&&strcmp(p->data,key)!=0)  //直到p为NULL或p->    data为key止
        p=p->next;        //扫描下一个结点
    return p;    //若p=NULL则查找失败,否则p指向找到的值为key的结点
}

//==========用尾插入法建立带头结点的单链表===========
 LinkList CreatListR1(void)
 {
    char ch[10];
    LinkList head=(LinkList)malloc(sizeof(ListNode)); //生成头结点
    ListNode *s,*r,*pp;
    r=head;
    r->next=NULL;
    printf("Input # to end  ");  //输入"#"代表输入结束
    printf("Please input Node_data:");
    scanf("%s",ch);           //输入各结点的字符串
    while(strcmp(ch,"#")!=0) {         
         pp=LocateNode(head,ch);      //按值查找结点,返回结点指针
     if(pp==NULL) {            //没有重复的字符串,插入到链表中
                s=(ListNode *)malloc(sizeof(ListNode));
        strcpy(s->data,ch);
            r->next=s;
        r=s;
            r->next=NULL;
         }
                printf("Input # to end  ");
        printf("Please input Node_data:");
            scanf("%s",ch);
    }
    return head;        //返回头指针
}
//==========删除带头结点的单链表中的指定结点=======
void DeleteList(LinkList head,char *key)
{
    ListNode *p,*r,*q=head;
    p=LocateNode(head,key);    //按key值查找结点的
    if(p==NULL ) {            //若没有找到结点,退出
    printf("position error");
        exit(0);
    }
    while(q->next!=p)        //p为要删除的结点,q为p的前结点
        q=q->next;
    r=q->next;
    q->next=r->next;
    free(r);               
void ListInsert_L(LinkList head,int i,j,ElemType e)
{head=L;
i=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1)                     //i小于或者大于表长+1
printf("ERROR\n");
s=(LinkList)malloc(sizeof(LNode));             //生成新的结点
s=s->data=e;                        //插入L中
s=->next=p->next;
p->next=s;
printf("ok\n");}

//===========打印链表=======
void printlist(LinkList head)
{
    ListNode *p=head->next;       //从开始结点打印
    while(p){
    printf("%s,   ",p->data);
        p=p->next;
    }
    printf("\n");
}
//==========删除所有结点,释放空间===========
void DeleteAll(LinkList head)
{
    ListNode *p=head,*r;
    while(p->next){
    r=p->next;
        free(p);
    p=r;
     }
     free(p);
}

//==========主函数==============
void main()
{
  char ch[10],num[10];
  LinkList head;
  head=CreatListR1();          //用尾插入法建立单链表,返回头指针
  printlist(head);             //遍历链表输出其值
  printf(" Delete node (y/n):");  //输入"y"或"n"去选择是否删除结点
  scanf("%s",num);
  if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){
    printf("Please input Delete_data:");
            scanf("%s",ch);            //输入要删除的字符串
    DeleteList(head,ch);
            printlist(head);
  }
  DeleteAll(head);            //删除所有结点,释放内存
}




我在那个插入结点的那一步运行不起了,前面的是正确的,帮我修改一下吧,谢谢了!
2013-11-05 23:48
快速回复:单链表的简单操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088501 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved