70,037
社区成员
发帖
与我相关
我的任务
分享
#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;
}