这是一个数据结构的问题,希望大家能帮帮我

zuiaimo 2009-11-08 05:11:59
#include<stdio.h>
#include<string>
#include<stdlib.h>
#include<malloc.h>
typedef char DataType ;
typedef struct ListNode
{
DataType data;
struct ListNode *link;
} ListNode;
typedef ListNode *LinkList;

LinkList Create_List(LinkList &head)
{
LinkList q,p;
DataType data;
printf("Create_LinkList!\n");
head=(LinkList)malloc(sizeof(ListNode));
q=head;
while((data=getchar())!='\n')
{
p=(LinkList)malloc(sizeof(ListNode));
p->data=data;
q->link=p;
q=p;
}
return head;
}

void Print_List(LinkList &head)
{
LinkList p;
p=head->link;
while(p->link!=NULL)
{
printf("%c ",p->data);
p=p->link;
}
printf("\n");
}

int List_Delete ( LinkList &head, int i )
{
ListNode *p, *q;
int k = 1;
if ( i == 1 )
{ q = head->link; }
else{
p = head;
while ( p->link!= NULL && k < i-1 )
{ p = p->link; k++; }
if ( p->link == NULL)
return 0;
else {
q = p->link;
p->link = q->link; }
}
free ( q );
return 1;
}



void main()
{
int i;
LinkList head; //定义头指针
Create_List(head); //设计函数,初始化链表
Print_List(head); //设计函数,显示链表中各结点数据域中的值
scanf("%d", &i );
List_Delete(head,i); //设计函数,删除表中第i个结点
Print_List(head);
}
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tauren_Chieftan 2009-11-08
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#define OK 0
#define FALSE -1

typedef char DataType;

typedef struct Listnode
{
DataType data;
struct Listnode *link;
} ListNode, *LinkList;



LinkList Create_List();
void Print_List(LinkList head);
int List_Delete ( LinkList *head, int i );

LinkList Create_List()
{
LinkList head, q, p;
DataType data;
printf("Create_LinkList!\n");
head = (ListNode *)malloc(sizeof(ListNode));
head->link = NULL;
q = head;
while((data = getchar())!='\n')
{
p=(ListNode *)malloc(sizeof(ListNode));
p->data = data;
p->link = NULL;
q->link=p;
q = p;
fflush(stdin);
}

return head;
}

void Print_List(LinkList head)
{
LinkList p;
p=head->link;
while(p != NULL)
{
printf("%c ",p->data);
p=p->link;
}
printf("\n");
}

int List_Delete ( LinkList *head, int i )
{
ListNode *p, *q;
int k = 0;

if(i <= 0)
return ;

p = *head;
if ( i == 1 )
{

*head = (*head)->link;
free(p);
return OK;
}

while(p != NULL)
{
q = p;
p = p->link;
k++;
if(k == i)
{
q->link = p->link;
free(p);
p = NULL;
return OK;
}

}
printf("none\n"); /* 超过链表中节点个数 */
return FALSE;

}



int main()
{
int i;
LinkList head; //定义头指针
head = Create_List(); //设计函数,初始化链表
Print_List(head); //设计函数,显示链表中各结点数据域中的值
scanf("%d", &i );
fflush(stdin);
List_Delete(&head,i); //设计函数,删除表中第i个结点
Print_List(head);
getchar();
return 0;
}




楼主你应该再看下单链表,以及指针的操作。
zuiaimo 2009-11-08
  • 打赏
  • 举报
回复
调用完这个函数Create_List(head),不能继续下去
菜鸟二号 2009-11-08
  • 打赏
  • 举报
回复
什么问题哈?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧