#include<stdio.h>
#include<stdlib.h>
#define Maxsize 10
typedef int Elemtype;
typedef struct node
{
Elemtype data;
struct node* next;
}Node, * List;
List creat(int L)
{
List p, r = NULL, list = NULL;
Elemtype i, e;
for (i = 1;i <= L;i++)
{
scanf_s("%d", &e);
p = (List)malloc(sizeof(Node));
p->data = e;
p->next = NULL;
if (!list)
{
list = p;
}
else
{
r->next = p;
}
r = p;
}
return list;
}
void insert(List* list, List p, Elemtype e)
{
List q;
q = (List)malloc(sizeof(Node));
q->data = e;
if (!list)
{
*list = q;
q->next = NULL;
}
else
{
q->next = p->next;
p->next = p;
}
}
void delete(List* list, List q)
{
List r = NULL;
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 distory(List* list)
{
List q, p;
p = *list;
while (p)
{
q = p->next;
free(p);
p = q;
}
*list = NULL;
}
int main()
{
int i, e;
List q, l;
q = l = creat(1);
printf("請輸入插入鏈表的元素:以0結尾");
scanf_s("%d", &i);
while (i)
{
insert(&l, q, i);
q = q->next;
scanf_s("%d", &i);
}
q = l;
printf("鏈表的內容是:");
while (q)
{
printf("%d", q->data);
q = q->next;
}
q = l;
printf(" 洗掉第五個元素");
for (i = 1;i < 5;i++)
{
q = q->next;
}
delete(&l, q);
q = l;
printf("洗掉第五個元素后為:");
while (q)
{
printf("%d", q->data);
q = q->next;
}
distory(&l);
return 0;
}
為什么我輸入1 2 3 4 5 6 7 它一直輸出1啊,求解,想檢查了一個多小時了,太粗心還是看不出來拿錯了
uj5u.com熱心網友回復:
已解決111轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282195.html
標籤:其它技術問題
下一篇:如何將代碼本身寫入快取區
